小Q系列故事——大笨鐘
Time Limit: 600/200 MS (Java/Others)????Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1458????Accepted Submission(s): 734
Problem Description
飽嘗情感苦惱的小Q本打算隱居一段時間,但僅僅在3月25號一天沒有出現,就有很多朋友想念他,所以,他今天決定再出來一次,正式和大家做個告別。
小Q近來睡眠情況很差——晚上睡不著,早上又起不來!以前總是全勤的他這個月甚至遲到了好幾次,雖然主管沒說什么,但是他自己清楚此事的嚴重性。
愛情沒有了,小Q不想再失去面包,于是他決定買個鬧鐘,為求質量可靠,特意挑了個最貴的原裝進口貨!但是,正所謂屋漏偏逢連夜雨、人倒霉的時候喝涼水都塞牙,小Q新買的這個進口鬧鐘竟然每分鐘總是比正確時間慢那么幾秒!
可憐的小Q憤憤然道:“真是一個大笨鐘!”
但是為了充分利用大笨鐘,小Q還是盡力想辦法搞清楚它的性能,希望能將其當作正常時鐘使用。
小Q從如下三方面去研究大笨鐘:
1、 假設正常時間走了t分鐘,計算大笨鐘走的時間;
2、 假設大笨鐘走了t分鐘,計算正常時間走的時間;
3、 小Q將大笨鐘與當前時間調成正確時間,此時記為第0次,計算第k次大笨鐘顯示的時間與正確時間相同需要的時間(大笨鐘的結構和普通時鐘相同,即分為12大格,60小格)。
小Q近來睡眠情況很差——晚上睡不著,早上又起不來!以前總是全勤的他這個月甚至遲到了好幾次,雖然主管沒說什么,但是他自己清楚此事的嚴重性。
愛情沒有了,小Q不想再失去面包,于是他決定買個鬧鐘,為求質量可靠,特意挑了個最貴的原裝進口貨!但是,正所謂屋漏偏逢連夜雨、人倒霉的時候喝涼水都塞牙,小Q新買的這個進口鬧鐘竟然每分鐘總是比正確時間慢那么幾秒!
可憐的小Q憤憤然道:“真是一個大笨鐘!”
但是為了充分利用大笨鐘,小Q還是盡力想辦法搞清楚它的性能,希望能將其當作正常時鐘使用。
小Q從如下三方面去研究大笨鐘:
1、 假設正常時間走了t分鐘,計算大笨鐘走的時間;
2、 假設大笨鐘走了t分鐘,計算正常時間走的時間;
3、 小Q將大笨鐘與當前時間調成正確時間,此時記為第0次,計算第k次大笨鐘顯示的時間與正確時間相同需要的時間(大笨鐘的結構和普通時鐘相同,即分為12大格,60小格)。
?
Input
輸入數據第一行是一個正整數T,表示總共有T組測試數據;
接下來的每組數據首先輸入正整數x,表示大笨鐘每分鐘比正常時鐘慢x秒;
接下來一行是一個正整數Q,表示共有Q次詢問;
接下來Q行,每行首先輸入詢問方式(1、2或3,對應小Q研究大笨鐘的三方面),如果輸入1或2,接下來輸入正整數t,如果輸入3,接下來輸入正整數k(t和k的含義見題目)。
[Technical Specification]
T <= 100
x < 60
Q <= 100
t <= 10000
k <= 10
接下來的每組數據首先輸入正整數x,表示大笨鐘每分鐘比正常時鐘慢x秒;
接下來一行是一個正整數Q,表示共有Q次詢問;
接下來Q行,每行首先輸入詢問方式(1、2或3,對應小Q研究大笨鐘的三方面),如果輸入1或2,接下來輸入正整數t,如果輸入3,接下來輸入正整數k(t和k的含義見題目)。
[Technical Specification]
T <= 100
x < 60
Q <= 100
t <= 10000
k <= 10
?
Output
請輸出要計算的答案,以秒為單位,保留兩位小數,每次查詢輸出一行(參見Sample)。
?
Sample Input
1 1 3 1 2 2 2 3 1
?
Sample Output
118.00 122.03 2592000.00
1.正常時鐘每走1s,大笨鐘走 60-t/60 s,所以正常時鐘每走 xs ,大笨鐘走 (1-t/60)*x s.
2.大笨鐘每走 1s ,正常時鐘走 60/60-t s,所以大奔鐘每走 xs,正常時鐘走 60*x/(60-t) s.
3.以00:00:00為參考系,大笨鐘每走完一圈要比正常時鐘少 60*12*x s,所以正常時鐘追 12*3600/12*60*x = 60/x 圈就可以與大奔鐘相遇一次,相遇k次所需時間為k*12*3600*(60/x)
#include<stdio.h> #include<string.h> #include <iostream> #include <algorithm> using namespace std; int main() {int tcase;scanf("%d",&tcase);while(tcase--){int t,m,a,b;double ans;scanf("%d%d",&t,&m);while(m--){scanf("%d%d",&a,&b);if(a==1){ans = b*(60-t)*1.0;}if(a==2){ans = 60.0*b*60/(60-t);}if(a==3){ans = b*3600*12*60.0/t;}printf("%.2lf\n",ans);}}return 0; }
?