C++の練習を兼ねて, AtCoder Regular Contest 012 の 問題A (A – 週末) ~ 問題B (B – アキレスと亀) を解いてみた.
■感想.
1. 他の問題に比べて, すんなり実装できたので良かったと思う.
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 |
#include <bits/stdc++.h> using namespace std; // 週末までの日数を出力. // @param s: 曜日. // @return : 週末までの日数. int weekend(string s){ if(s == "Sunday") return 0; if(s == "Monday") return 5; if(s == "Tuesday") return 4; if(s == "Wednesday") return 3; if(s == "Thursday") return 2; if(s == "Friday") return 1; if(s == "Saturday") return 0; } int main(){ // 1. 入力情報. char c[22]; scanf("%s", c); string s(c); // 2. 出力. printf("%d\n", weekend(s)); 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 |
[入力例] Monday [出力例] 5 ※AtCoderのテストケースより [入力例] Saturday [出力例] 0 ※AtCoderのテストケースより [入力例] Sunday [出力例] 0 ※AtCoderのテストケースより [入力例] Wednesday [出力例] 3 ※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 |
#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; double va, vb, L; scanf("%d %lf %lf %lf", &N, &va, &vb, &L); // 2. 高橋君とカメの距離は. double ans = L; rep(i, N) ans *= (vb / va); // 3. 出力. printf("%.12lf\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 |
[入力例] 3 2 1 16 [出力例] 2.000000000000 ※AtCoderのテストケースより [入力例] 100 100 1 100 [出力例] 0.000000000000 ※AtCoderのテストケースより [入力例] 80 50 49 72 [出力例] 14.302717205907 ※AtCoderのテストケースより [入力例] 12 4 3 524288 [出力例] 16607.531250000000 [入力例] 10 100 99 999 [出力例] 903.477692933796 |
■参照サイト
AtCoder Regular Contest 012