盜夢空間

《盜夢空間》是一部精彩的影片,在這部電影裏,Cobb等人可以進入夢境之中,夢境裏的時間會比現實中的時間過得快得多,這裏假設現實中的3分鐘,在夢裏就是1小時。

然而,Cobb他們利用強效鎮靜劑,可以從第一層夢境進入第二層夢境,甚至進入三層,四層夢境,每層夢境都會產生同樣的時間加速效果。那麼現在給你Cobb在各層夢境中經歷的時間,你能算出現實世界過了多長時間嗎?

比如,Cobb先在第一層夢境待了1個小時,又在第二層夢境裏待了1天,之後,返回第一層夢境之後立刻返回了現實。

那麼在現實世界裏,其實過了396秒(6.6分鐘)


做這道題是因爲這道題太好玩了。
如果進入一層夢他的時間會增加,按公式增加,你只要判斷他在哪一層夢中,並對輸入指令做出處理即可,是到非常可愛的題。


代碼如下:
#include<stdio.h>
02.#include<math.h>
03.#include<string.h>
04.int main()
05.{
06.int T,M;
07.double s,real;
08.char a[100];
09.char b[100];
10.char c[100];
11.scanf("%d",&T);
12.getchar();
13.while(T--)                      //T組輸入              
14.{
15.scanf("%d",&M);
16.getchar();
17.real=0;
18.double k=0;
19.while(M--)                  //指令數量
20.{
21.scanf("%s",a);
22.int j;
23.if((a[0]=='I'&&a[1]=='N')||(a[0]=='O'&&a[1]=='U'&&a[2]=='T'))
24.{
25.for(j=0; j<strlen(a); j++)      //用b[]記錄這次指令,留作以後判斷用
26.b[j]=a[j];
27.if(a[0]=='I'&&a[1]=='N')            //如果是IN的話,k++,k是夢的層數。
28.k++;
29.if(a[0]=='O'&&a[1]=='U'&&a[2]=='T')   //如果是OUT的話,k--.
30.k--;
31.}
32.if(a[0]=='S'&&a[1]=='T'&&a[2]=='A'&&a[3]=='Y'&&b[0]=='I'&&b[1]=='N')
33.{
34.scanf("%lf",&s);        //b[]是上一層指令,如果這一層指令是stay且上一層指
35.s*=60;                  //是in的話 就輸入在這一層所呆的時間,並且通過k計算
36.real+=s*(1/pow(20,k));  //現實時間。
37. 
38.}
39.else if(a[0]=='S'&&a[1]=='T'&&a[2]=='A'&&a[3]=='Y'&&b[0]=='O'&&b[1]=='U'&&b[2]=='T')
40.{
41.scanf("%lf",&s);        //與上述同理。
42.s*=60;
43.real+=s*(1/pow(20,k));
44.}
45.}
46.printf("%.lf\n",real);
47.}
48.return 0;
49.}


發佈了39 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章