您的位置:首页 > 其它

盗梦空间

2016-05-07 20:09 218 查看
《盗梦空间》是一部精彩的影片,在这部电影里,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.
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: