然而,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.
}