問題
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;
}