《盗梦空间》是一部精彩的影片,在这部电影里,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.
}