問題
https://atcoder.jp/contests/abc001/tasks/abc001_3 (新しいタブで開く)
問題文
風向と風程が与えられるので、気象形式に直してね。
方位 | 角度 (左端含む・右端含まない) |
---|---|
N | 348.75 - 11.25 |
NNE | 11.25 - 33.75 |
NE | 33.75 - 56.25 |
ENE | 56.25 - 78.75 |
E | 78.75 - 101.25 |
ESE | 101.25 - 123.75 |
SE | 123.75 - 146.25 |
SSE | 146.25 - 168.75 |
S | 168.75 - 191.25 |
SSW | 191.25 - 213.75 |
SW | 213.75 - 236.25 |
WSW | 236.25 - 258.75 |
W | 258.75 - 281.25 |
WNW | 281.25 - 303.75 |
NW | 303.75 - 326.25 |
NNW | 326.25 - 348.75 |
C | 風力 0 |
風力 | 風速 (両端含む) |
---|---|
0 | 0.0 - 0.2 |
1 | 0.3 - 1.5 |
2 | 1.6 - 3.3 |
3 | 3.4 - 5.4 |
4 | 5.5 - 7.9 |
5 | 8.0 - 10.7 |
6 | 10.8 - 13.8 |
7 | 13.9 - 17.1 |
8 | 17.2 - 20.7 |
9 | 20.8 - 24.4 |
10 | 24.5 - 28.4 |
11 | 28.5 - 32.6 |
12 | 32.7 - |
サンプル
I/O 1
2750 628
風向: 275.0 度; 風程: 628m/min
W 5
I/O 2
161 8
C 0
I/O 3
3263 15
NNW 1
I/O 8 まであるけど略。
考察
場合分けが面倒だけど、やるだけ。
そのまま秒速に直すと誤差が生じかねないので、風力のほうを分速にしておく。
コード
https://atcoder.jp/contests/abc001/submissions/27938477 (新しいタブで開く)
int main() { int deg, dis; cin >> deg >> dis; if (dis < 15) { printf("C 0\n"); return 0; } { if (deg <= 112) printf("N"); else if (deg <= 337) printf("NNE"); else if (deg <= 562) printf("NE"); else if (deg <= 787) printf("ENE"); else if (deg <= 1012) printf("E"); else if (deg <= 1237) printf("ESE"); else if (deg <= 1462) printf("SE"); else if (deg <= 1687) printf("SSE"); else if (deg <= 1912) printf("S"); else if (deg <= 2137) printf("SSW"); else if (deg <= 2362) printf("SW"); else if (deg <= 2587) printf("WSW"); else if (deg <= 2812) printf("W"); else if (deg <= 3037) printf("WNW"); else if (deg <= 3262) printf("NW"); else if (deg <= 3487) printf("NNW"); else printf("N"); } printf(" "); { if (dis < 93) printf("1"); else if (dis < 201) printf("2"); else if (dis < 327) printf("3"); else if (dis < 477) printf("4"); else if (dis < 645) printf("5"); else if (dis < 831) printf("6"); else if (dis < 1029) printf("7"); else if (dis < 1245) printf("8"); else if (dis < 1467) printf("9"); else if (dis < 1707) printf("10"); else if (dis < 1959) printf("11"); else printf("12"); } printf("\n"); return 0; }