C言語によるビデオテープの録画可能時間です。
カウンタ値の入力から、2通りの録画可能時間を求め、時:分:秒の形式で出力するプログラムです。
・問題
標準録画で 120 分のビデオテープがあります。
テープを完全に巻き戻した状態でビデオデッキのカウンタを 00:00:00 にし、標準録画モードで録画したところ、あるカウンタ値になりました。
このカウンタ値(時、分、秒)を入力し、残りのテープの長さ(録画可能時間)を求め、時:分:秒の形式で出力するプログラムを作成して下さい。
ただし、2 時間(120分)以内の入力とします。
なお、テープ残量は標準録画モードと 3 倍録画モードの場合の2通りを計算し、出力例のように時、分、秒とも 2 桁ずつ出力します。また "05" のように 10 の位が 0 の場合は、"0" をつけてください。
・入力される値
複数のデータセットが与えられます。
各データセットは以下のとおりです。
T H S
T, H, S はそれぞれ時、分、秒を表す整数です。
T, H, S がすべて -1 のとき入力の終わりとします。データセットの数は 50 を超えません。
・期待する出力
各データセットごとに
1 行目に、テープの残りを標準録画した場合の録画可能時間の時、分、秒を半角コロン区切りで、
2 行目に、テープの残りを3倍録画した場合の録画可能時間の時、分、秒を半角コロン区切りで
出力して下さい。
僕が作成、提出したコードは、以下のとおりです。
/* Problem Set from Volume0 0074 : Videotape http://judge.u-aizu.ac.jp/ C言語によるビデオテープの録画可能時間 https://neguse-atama.hatenablog.com */ #include<stdio.h> int main(void){ int T,H,S,t,ans1,ans2,ans3; while(1){ scanf("%d %d %d",&T,&H,&S); if(T==-1 && H==-1 && S==-1){ break; } t=7200-(3600*T+60*H+S); ans1=t/3600; ans2=(t%3600)/60; ans3=t%60; printf("%02d:%02d:%02d\n",ans1,ans2,ans3); t=t*3; ans1=t/3600; ans2=(t%3600)/60; ans3=t%60; printf("%02d:%02d:%02d\n",ans1,ans2,ans3); } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Problem Set from Volume0 0074 : Videotape