A - 積雪深差
ある時刻の積雪深 H_1 と その 1 時間前の積雪深 H_2 が与えられます。この時、この 1 時間の積雪深差 H_1 - H_2 の値を計算して出力してください。
入力は以下の形式で標準入力から与えられる。
積雪深差 H_1 - H_2 の値を 1 行で出力せよ。
また、出力の末尾には改行を入れること。
Time Limit: 2 sec / Memory Limit: 64 MB
注意
この問題は古い問題です。過去問練習をする場合は、新しいAtCoder Beginner Contestから取り組むことをお勧めしています。
問題文
入力
H_1 H_2
- 1 行目には、整数で、ある時刻の積雪深 H_1\ (0≦H_1≦2,000) が与えられる。
- 2 行目には、整数で、1 時間前の積雪深 H_2\ (0≦H_2≦2,000) が与えられる。
出力
また、出力の末尾には改行を入れること。
入力例 1
15 10
出力例 1
5
- 15-10 =5
入力例 2
0 0
出力例 2
0
- 0-0 =0
入力例 3
5 20
出力例 3
-15
- 5-20 =-15
B - 視程の通報
気象情報は、世界中に様々な形で流れています。そのひとつの地上実況気象通報式 (SYNOP) では、視程 (肉眼で物体がはっきりと確認できる最大の距離) を、次の規則に従って、VVという値 (通報式) に変換して報じます。
なお、VVは必ず(上位の 0 を含めて)2桁の整数であり、上記のルールに従って計算した時に整数にならないような入力や、上記の範囲に入らない入力 (例:5{\rm km} より大きく 6{\rm km} 未満) などはありません。
入力は以下の形式で標準入力から与えられる。
VVの値を 1 行で出力せよ。
また、出力の末尾には改行を入れること。
Time Limit: 2 sec / Memory Limit: 64 MB
注意
この問題は古い問題です。過去問練習をする場合は、新しいAtCoder Beginner Contestから取り組むことをお勧めしています。
問題文
- 0.1{\rm km} 未満: VVの値は 00 とする。
- 0.1{\rm km} 以上 5{\rm km} 以下:距離 ({\rm km}) を 10 倍した値とする。1 桁の場合は上位に 0 を付す。
- 例えば、2,000{\rm m} =2.0{\rm km} ならば、VVは 20 である。同じく、200{\rm m}の場合VVは 02 である。
- 6{\rm km} 以上 30{\rm km} 以下:距離 ({\rm km}) に 50 を足した値とする。
- 例えば、15,000{\rm m} =15{\rm km} ならば、VVは 65 である。
- 35{\rm km} 以上 70{\rm km} 以下:距離 ({\rm km}) から 30 を引いて 5 で割った後、80 を足した値とする。
- 例えば、40,000{\rm m} =40{\rm km} ならば、VVは 82 である。
- 70{\rm km} より大きい:VVの値は 89 とする。
なお、VVは必ず(上位の 0 を含めて)2桁の整数であり、上記のルールに従って計算した時に整数にならないような入力や、上記の範囲に入らない入力 (例:5{\rm km} より大きく 6{\rm km} 未満) などはありません。
入力
m
- 1 行目には、距離を表す整数 m\ (0≦m≦100,000) が与えられる。単位はメートル ({\rm m}) である。
出力
また、出力の末尾には改行を入れること。
入力例 1
15000
出力例 1
65
- 入力は15,000{\rm m} =15{\rm km} であり、6{\rm km} 以上 30{\rm km} 以下なので、「{\rm km} での値に 50 を足してVVとする。」というルールに従う。
- そのため、15+50=65が正解である。
入力例 2
75000
出力例 2
89
- 70{\rm km} より大きい場合は、VVは 89 である。
入力例 3
200
出力例 3
02
- VVは 2 桁でなければならない。
C - 風力観測
ある風向風速計は、風向の角度と風程を 1 分毎に自動で記録してくれます。
風向の角度というのは真北を 0 度とし、そこから時計回りに風の吹いてくる方向を定めたものです。気象観測等では全体を等しく 16 分割した 16 方位が用いられます。16 方位と角度は、以下の表のように対応します。
風程というのは、風向風速計の風車が、ある一定の時間に風によって回った量を距離によって表したものです。
例えば、1 分間の風程が 300{\rm m} というのは、1 分間に吹いた風によって風車が 300{\rm m} 回ったという事です。この時、この 1 分間の平均風速は 300{\rm m} を 60 秒で割って、5{\rm m}/{\rm s} と求められます。
与えられたデータを、ラジオ等で流れる「気象通報」と同様の形式に直そうと思います。
気象通報では、16 方位での風向と、風力 (ビューフォート風力階級) が伝えられます。
風向は、先の表の 16 方位です。 ただし、風力 0 の場合、実際には「風弱く」と伝えられるため、風向は 16 方位ではなく、特別な向きである
風力は、風速を計算し、小数第 2 位を四捨五入して、以下の対応により風力に変換します。
風向 (角度) と 1 分間の風程が入力されるとき、それを気象通報の形式に直して出力するプログラムを作成してください。
入力は以下の形式の 1 行からなる。
出力は以下の形式の 1 行とする。
Time Limit: 2 sec / Memory Limit: 64 MB
注意
この問題は古い問題です。過去問練習をする場合は、新しいAtCoder Beginner Contestから取り組むことをお勧めしています。
問題文
風向の角度というのは真北を 0 度とし、そこから時計回りに風の吹いてくる方向を定めたものです。気象観測等では全体を等しく 16 分割した 16 方位が用いられます。16 方位と角度は、以下の表のように対応します。
方位 | 角度 | 方位 | 角度 |
---|---|---|---|
N (北) | 他のいずれにも当てはまらない | S (南) | 168.75 度以上 191.25 度未満 |
NNE (北北東) | 11.25 度以上 33.75 度未満 | SSW (南南西) | 191.25 度以上 213.75 度未満 |
NE (北東) | 33.75 度以上 56.25 度未満 | SW (南西) | 213.75 度以上 236.25 度未満 |
ENE (東北東) | 56.25 度以上 78.75 度未満 | WSW (西南西) | 236.25 度以上 258.75 度未満 |
E (東) | 78.75 度以上 101.25 度未満 | W (西) | 258.75 度以上 281.25 度未満 |
ESE (東南東) | 101.25 度以上 123.75 度未満 | WNW (西北西) | 281.25 度以上 303.75 度未満 |
SE (南東) | 123.75 度以上 146.25 度未満 | NW (北西) | 303.75 度以上 326.25 度未満 |
SSE (南南東) | 146.25 度以上 168.75 度未満 | NNW (北北西) | 326.25 度以上 348.75 度未満 |
風程というのは、風向風速計の風車が、ある一定の時間に風によって回った量を距離によって表したものです。
例えば、1 分間の風程が 300{\rm m} というのは、1 分間に吹いた風によって風車が 300{\rm m} 回ったという事です。この時、この 1 分間の平均風速は 300{\rm m} を 60 秒で割って、5{\rm m}/{\rm s} と求められます。
与えられたデータを、ラジオ等で流れる「気象通報」と同様の形式に直そうと思います。
気象通報では、16 方位での風向と、風力 (ビューフォート風力階級) が伝えられます。
風向は、先の表の 16 方位です。 ただし、風力 0 の場合、実際には「風弱く」と伝えられるため、風向は 16 方位ではなく、特別な向きである
C
とします。風力は、風速を計算し、小数第 2 位を四捨五入して、以下の対応により風力に変換します。
風力 | 風速 | 風力 | 風速 | 風力 | 風速 |
---|---|---|---|---|---|
風力0 | 0.0{\rm m}/{\rm s} 以上 0.2{\rm m}/{\rm s} 以下 | 風力5 | 8.0{\rm m}/{\rm s} 以上 10.7{\rm m}/{\rm s} 以下 | 風力10 | 24.5{\rm m}/{\rm s} 以上 28.4{\rm m}/{\rm s} 以下 |
風力1 | 0.3{\rm m}/{\rm s} 以上 1.5{\rm m}/{\rm s} 以下 | 風力6 | 10.8{\rm m}/{\rm s} 以上 13.8{\rm m}/{\rm s} 以下 | 風力11 | 28.5{\rm m}/{\rm s} 以上 32.6{\rm m}/{\rm s} 以下 |
風力2 | 1.6{\rm m}/{\rm s} 以上 3.3{\rm m}/{\rm s} 以下 | 風力7 | 13.9{\rm m}/{\rm s} 以上 17.1{\rm m}/{\rm s} 以下 | 風力12 | 32.7{\rm m}/{\rm s} 以上 |
風力3 | 3.4{\rm m}/{\rm s} 以上 5.4{\rm m}/{\rm s} 以下 | 風力8 | 17.2{\rm m}/{\rm s} 以上 20.7{\rm m}/{\rm s} 以下 | ||
風力4 | 5.5{\rm m}/{\rm s} 以上 7.9{\rm m}/{\rm s} 以下 | 風力9 | 20.8{\rm m}/{\rm s} 以上 24.4{\rm m}/{\rm s} 以下 |
風向 (角度) と 1 分間の風程が入力されるとき、それを気象通報の形式に直して出力するプログラムを作成してください。
入力
Deg Dis
- Degは風向を示し、本来の角度を 10 倍した整数で与えられる (例えば、90 度なら 900、137.5 度なら1375と与えられる) 。
- Disは 1 分間の風程を示す整数である。単位はメートル ({\rm m}) である。
制約
- 0≦Deg<3,600
- 0≦Dis<12,000
出力
Dir W
-
Dirは風向を示し、
C
,N
,E
,W
,S
からなる 1〜3 文字の文字列である。 - Wは風力を示し、0 以上 12 以下の整数である。
入力例 1
2750 628
- この場合、風向は 275 度、風程は 1 分あたり 628{\rm m} である。
出力例 1
W 5
- 275 度は西向きなので、
W
と出力する。 - 1 分で628{\rm m}ということは、10.46{\rm m}/{\rm s}なので、小数第 2 位を四捨五入して10.5{\rm m}/{\rm s}となり、風力 5 に相当する。
入力例 2
161 8
出力例 2
C 0
- 風向は本来
NNE
だが、風力 0 であるためC
とする。
入力例 3
3263 15
出力例 3
NNW 1
- 浮動小数点数型での計算は、誤差が発生する恐れがあります。
- 環境によって計算結果が変わることもありますので、誤差には十分注意しましょう。
入力例 4
1462 1959
出力例 4
SE 12
- 誤差には十分注意しましょう。
入力例 5
1687 1029
出力例 5
SSE 8
- 誤差には十分注意しましょう。
入力例 6
2587 644
出力例 6
WSW 5
- 誤差には十分注意しましょう。
入力例 7
113 201
出力例 7
NNE 3
- 誤差には十分注意しましょう。
入力例 8
2048 16
出力例 8
SSW 1
D - 感雨時刻の整理
雨の降っていた時刻というのは、降水量と並んで重要です。今、ある 1 日の、雨が降っていた時刻に関するメモが見つかったので、これを整理して、雨の降っていた時刻を調べたいと思います。
整理は、以下の規則に従って行います。
メモの内容が入力される時、雨の降っていた時刻を、この規則に合致するよう整理して出力するプログラムを作成してください。
入力は以下の形式で標準入力から与えられる。
雨が降っていた時刻を整理して、降り始めの時刻の早い順番に、降り始めた時刻と降り終わりの時刻をハイフンで区切って出力せよ。
その際、連続した 1 つの雨を 1 行に出力し、時刻の形式は入力と同じ形式を用いること。
また、出力の末尾には改行を入れること。
Time Limit: 2 sec / Memory Limit: 64 MB
注意
この問題は古い問題です。過去問練習をする場合は、新しいAtCoder Beginner Contestから取り組むことをお勧めしています。
問題文
整理は、以下の規則に従って行います。
- 感雨時間のメモから、その日 1 日の雨の降っていた時刻を時系列順に出す。日付を超えて降っている雨は、 00:00 降り始めや 24:00 降り終わりとして扱われるものとし、日付をまたぐようなメモは入力されない。
- 雨の降り始め・降り終わりはそれぞれ直前・直後の 5 分単位の時刻に丸める。例えば、13:23 に降り始めて 14:01 にやんだ雨は、13:20 から 14:05 まで降っていたということにする。
- 丸めた後の結果において、2 つ以上のメモに書かれていた感雨時刻が重複した場合、1 つの連続した雨とみなす。例えば、11:06 に降り始めて 11:23 にやんだ雨、11:29 に降り始めて 12:03 にやんだ雨、11:48 に降り始めて 12:10 にやんだ雨の 3 つがあった場合、11:05〜11:25、11:25〜12:05、11:45〜12:10 の 3 つの雨であるが、時間がかぶっているところをくっつけて 11:05 から 12:10 まで降っていた、1 つの連続した雨ということにする。
メモの内容が入力される時、雨の降っていた時刻を、この規則に合致するよう整理して出力するプログラムを作成してください。
入力
N S_1-E_1 S_2-E_2 : S_N-E_N
- 1 行目には、連続して雨の降っていた時刻の数を表す整数 N\ (1≦N≦30,000) が与えられる。
- 2 行目から N+1 行目までの N 行で、雨の降り始めの時刻と降り終わりの時刻が与えられる。
- この中の i\ (1≦i≦N) 行目において、雨が降り始めた時刻 S_i と雨が降り終わった時刻 E_i がハイフンで区切られて与えられる。
- 時刻 S_i と E_i において
- 時刻は必ず 4 桁の非負整数で与えられる。
- 時刻の上 2 桁が時間 ({\rm hour}) 、下 2 桁が分 ({\rm minute}) を表す。
- 時刻は 0000 から 2400 まで取り得る。ただし下 2 桁の部分が 59 を超えることはない。
- S_i が E_i より前の時刻であることが保証されている。
出力
その際、連続した 1 つの雨を 1 行に出力し、時刻の形式は入力と同じ形式を用いること。
また、出力の末尾には改行を入れること。
入力例 1
4 1148-1210 1323-1401 1106-1123 1129-1203
- 11:48〜12:10 の間、雨が降っていた。
- 13:23〜14:01 の間、雨が降っていた。
- 11:06〜11:23 の間、雨が降っていた。
- 11:29〜12:03 の間、雨が降っていた。
出力例 1
1105-1210 1320-1405
- 入力を 5 分単位に丸めると、順に 1145-1210、1320-1405、1105-1125、1125-1205となる。
- これを降り始めの時刻の早い順に直すと、1105-1125、1125-1205、1145-1210、1320-1405となる。
- 1105-1125、1125-1205の 2 つは、前者の降り終わりの時刻と後者の降り始めの時刻が一致するので、くっついて 1105-1205 となる。
- さらに、1105-1205 と、1145-1210 は、後者の降り始めの時刻が前者の降っている時刻の間に入るので、くっついて 1105-1210 となる。
- そのため、結局この例のような出力となる。
- なお、出力は雨の降った時刻の早い順でなければならない。
入力例 2
1 0000-2400
出力例 2
0000-2400
- 一日中雨が降っている場合である。
入力例 3
6 1157-1306 1159-1307 1158-1259 1230-1240 1157-1306 1315-1317
- 全く同じメモが複数存在する場合もある。
出力例 3
1155-1310 1315-1320