C++の練習を兼ねて, AtCoder Regular Contest 009 の 問題A (A – 元気にお使い!高橋君) ~ 問題B (B – おとぎの国の高橋君) を解いてみた.
■感想.
1. 問題B は, 数字の大小関係が変わる点が面白いと感じた.
2. 時間を見つけて, 引き続き, 過去問を振り返っていきたいと思う.
■C++版プログラム(問題A/AC版).
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 |
#include <bits/stdc++.h> using namespace std; #define repex(i, a, b, c) for(int i = a; i < b; i += c) #define repx(i, a, b) repex(i, a, b, 1) #define rep(i, n) repx(i, 0, n) #define repr(i, a, b) for(int i = a; i >= b; i--) int main(){ // 1. 入力情報. int N; scanf("%d", &N); // 2. おつかいに必要な金額を計算(消費税前). int ans = 0, a, b; rep(i, N){ scanf("%d %d", &a, &b); ans += a * b; } // 3. 消費税加算. ans *= 105; ans /= 100; // 4. 出力. printf("%d\n", ans); return 0; } |
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 |
[入力例] 2 4 120 2 130 [出力例] 777 ※AtCoderのテストケースより [入力例] 1 1 100 [出力例] 105 ※AtCoderのテストケースより [入力例] 4 3 510 1 835 2 140 6 205 [出力例] 4068 ※AtCoderのテストケースより [入力例] 10 8 10 7 189 4 545 1 596 3 209 10 850 9 943 6 921 8 984 10 702 [出力例] 44321 ※AtCoderのテストケースより |
■C++版プログラム(問題B/AC版).
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 |
#include <bits/stdc++.h> using namespace std; using P = pair<int, int>; #define repex(i, a, b, c) for(int i = a; i < b; i += c) #define repx(i, a, b) repex(i, a, b, 1) #define rep(i, n) repx(i, 0, n) #define repr(i, a, b) for(int i = a; i >= b; i--) #define all(x) x.begin(), x.end() #define pb push_back #define a first #define b second int main(){ // 1. 入力情報. int N, b, rank[10]; rep(i, 10){ scanf("%d", &b); rank[b] = i; } vector<P> v; scanf("%d", &N); rep(i, N){ char a[22]; scanf("%s", a); string S(a), T(a); // AtCoder国の大小関係を満たす数字に変換. int sl = S.size(); rep(j, sl) S[j] = rank[S[j] - '0'] + '0'; // 二種類の数字を保管. v.pb({stoi(S), stoi(T)}); } // 2. sort. sort(all(v)); // 3. 出力. for(auto &p : v) printf("%d\n", p.b); return 0; } |
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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
[入力例] 0 8 1 3 5 4 9 7 6 2 10 1 2 3 4 5 6 7 8 9 10 [出力例] 8 1 3 5 4 9 7 6 2 10 ※AtCoderのテストケースより [入力例] 0 9 8 7 6 5 4 3 2 1 3 13467932 98738462 74392 [出力例] 74392 98738462 13467932 ※AtCoderのテストケースより [入力例] 0 1 2 3 4 5 6 7 8 9 4 643 1234 43 909 [出力例] 43 643 909 1234 ※AtCoderのテストケースより [入力例] 0 7 4 3 9 5 6 2 1 8 2 333 333 [出力例] 333 333 ※AtCoderのテストケースより [入力例] 0 2 4 6 8 1 3 5 7 9 1 10 [出力例] 10 ※AtCoderのテストケースより [入力例] 3 1 4 5 9 2 6 8 7 0 52 314159265 35897932 3846264 338327950 288419 71693 993751058 20974944 5923078 164062 86208 998 62 803 48253 421170 6 7 98 21480 8651 328230664 709384460 9550 582231 725359 408 128481117 45028410 2 701938 5211055 596446229 48954 930 381964428 810 9756659 33446128 475648 233786 783165 27120 1909145 648566923 460348610 45432 664821 3393607 260249 1412 737 [出力例] 2 6 7 98 62 408 930 998 810 803 737 1412 9550 8651 45432 48954 48253 3393607 21480 27120 86208 71693 164062 33446128 421170 475648 582231 233786 260249 288419 664821 3846264 725359 783165 701938 1909145 5923078 5211055 35897932 9756659 338327950 314159265 45028410 328230664 20974944 381964428 128481117 460348610 596446229 993751058 648566923 709384460 |
■参照サイト
AtCoder Regular Contest 009