Submission #00077
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #include <bits/stdc++.h> using namespace std; #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define ll long long #define next_per(v) next_permutation(v.begin(), v.end()) #define prev_per(v) prev_permutation(v.begin(), v.end()) #define fixed(v) fixed << setprecision(v) #define total(n) ((n) * ((n) + 1) / 2) #define combi(n) ((n) * ((n)-1) / 2) // n個の数の組み合わせ数 #define lcm(a, b) ((a) * (b) / __gcd(a, b)) // binery_search(all(v),key) = keyがあるかないかをboolで返す // lower_bound(all(v),key) = key以上のイテレーターを返す(一番左) // upper_bound(all(v),key) = keyより大きい要素のイテレーターを返す // 最小値=max_element(v.begin(),v.end()); // 最大値=min_element(v.begin(),v.end()); template < class x> x rng_total(x l, x r) { // l ~ rまでの数の総和 return ((l + r) * (r - l + 1) / 2); } template < class x> x rng_combi(x l, x r) { //「l個の物からr個取った組み合わせ数」 x ans = 1; l++; for (x i = 1; i <= r; i++) { x sub = l - i; ans *= sub; ans /= i; } return (ans); } template < class x> x dig_sum(x num) { // 各桁の総和 x ans = 0; while (num > 0) { ans += num % 10; num /= 10; } return (ans); } // [struct]-------------------------------------- // <UnionFind> struct UnionFind { // 親の要素とサイズを管理する変数 int group_cnt; vector< int > parent, size; // 変数の初期化 UnionFind( int n) { parent.resize(n, -1); size.resize(n, 1); group_cnt = n; } // x の根を求める int root( int x) { // x が根のとき if (parent[x] == -1) return x; // 経路圧縮 return parent[x] = root(parent[x]); } // x と y の根が同じか bool isSame( int x, int y) { return root(x) == root(y); } // x と y のグループを併合する bool unite( int x, int y) { // x と y の根を取得 int rootX = root(x); int rootY = root(y); // x と y が同じグループのときは何もしない if (rootX == rootY) return ( false ); // union by size( y のサイズが小さくなるように調整 ) if (size[rootX] < size[rootY]) swap(rootX, rootY); // y の親を x にする parent[rootY] = rootX; // 連結成分の個数を一つ減らす group_cnt--; // x のサイズに y のサイズを足す size[rootX] += size[rootY]; return ( true ); } }; //----------------------------------------------------- int main() { cin.tie(nullptr); ios_base::sync_with_stdio( false ); //----------------------------------------------------- int x, y; cin >> x >> y; cout << (x + 1) + (y + 1) - __gcd(y, x) - 1 << endl; return (0); } // sishou |
ステータス
項目 | データ |
---|---|
問題 | 0005 - 電線 |
ユーザー名 | ei2134 |
投稿日時 | 2023-07-31 10:02:51 |
言語 | C++17 |
状態 | Accepted |
得点 | 6 |
ソースコード長 | 3082 Byte |
最大実行時間 | 29 ms |
最大メモリ使用量 | 788 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 6 / 6 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
in1.txt | AC | 21 ms | 600 KB |
1
|
in2.txt | AC | 19 ms | 624 KB |
1
|
in3.txt | AC | 18 ms | 680 KB |
1
|
in4.txt | AC | 20 ms | 636 KB |
1
|
in5.txt | AC | 20 ms | 588 KB |
1
|
in6.txt | AC | 20 ms | 544 KB |
1
|
in7.txt | AC | 29 ms | 628 KB |
1
|
in8.txt | AC | 18 ms | 704 KB |
1
|
in9.txt | AC | 19 ms | 788 KB |
1
|
in10.txt | AC | 28 ms | 684 KB |
1
|
in11.txt | AC | 20 ms | 640 KB |
1
|
in12.txt | AC | 24 ms | 596 KB |
1
|
in13.txt | AC | 22 ms | 548 KB |
1
|
in14.txt | AC | 18 ms | 632 KB |
1
|
in15.txt | AC | 19 ms | 588 KB |
1
|
in16.txt | AC | 20 ms | 548 KB |
1
|
in17.txt | AC | 18 ms | 632 KB |
1
|
in18.txt | AC | 16 ms | 584 KB |
1
|
in19.txt | AC | 14 ms | 540 KB |
1
|
in20.txt | AC | 19 ms | 572 KB |
1
|
in21.txt | AC | 14 ms | 520 KB |
1
|
in22.txt | AC | 20 ms | 476 KB |
1
|
in23.txt | AC | 21 ms | 560 KB |
1
|
in24.txt | AC | 25 ms | 640 KB |
1
|
in25.txt | AC | 22 ms | 724 KB |
1
|