• 盗梦空间


    题目125
    盗梦空间

    时间限制:3000 ms | 内存限制:65535 KB

    难度:2

    描述
    《盗梦空间》是一部精彩的影片,在这部电影里,Cobb等人可以进入梦境之中,梦境里的时间会
    比现实中的时间过得快得多,这里假设现实中的3分钟,在梦里就是1小时。

    然而,Cobb他们利用强效镇静剂,可以从第一层梦境进入第二层梦境,甚至进入三层,
    四层梦境,每层梦境都会产生同样的时间加速效果。那么现在给你Cobb在各层梦境中经历的时间,你能算出现实世界过了多长时间吗?

    比如,Cobb先在第一层梦境待了1个小时,又在第二层梦境里待了1天,之后,返回第一
    层梦境之后立刻返回了现实。

    那么在现实世界里,其实过了396秒(6.6分钟)

    输入第一行输入一个整数T(0<=T<=100),表示测试数据的组数。
    每组测试数据的第一行是一个数字M(3<=M<=100)
    随后的M行每行的开头是一个字符串,该字符串如果是"IN" 则Cobb向更深层的梦境出发了,
    如果是字符串"OUT"则表示Cobb从深层的梦回到了上一层。如果是首字符串是"STAY"则表示Cobb
    在该层梦境中停留了一段时间,本行随后将是一个整数S表示在该层停留了S分钟
    (1<=S<=10000000)。数据保证在现实世界中,时间过了整数秒。输出对于每组测试数据,
    输出现实世界过的时间(以秒为单位)。
    样例输入
    1
    6
    IN
    STAY 60
    IN
    STAY 1440
    OUT
    OUT
    样例输出
    396

     1 #include<stdio.h>
     2 #include<string.h>
     3   int main(){
     4        int T;
     5        scanf("%d",&T);
     6         while(T--){
     7             int M,sum,n,t,i;
     8             char a[5];
     9             scanf("%d",&M);
    10                 sum=0;
    11                 n=1;
    12          for(i=0;i<M;i++){
    13            scanf("%s",&a);
    14               if(a[0]=='I')
    15                  n*=20;
    16               else if(a[0]=='S')
    17                  {
    18                      scanf(" %d",&t);
    19                         sum+=t*60/n;
    20                         
    21                  } 
    22                  else if(a[0]=='O')
    23                      {
    24                          n=n/20;
    25                      }
    26                      
    27          }     printf("%d
    ",sum);
    28        }   return 0;
    29   }
    30        /*     int M,t,i,a[5];// 错误之处,字符串定义为整形了 
    31              
    32              scanf("%d",&M);
    33              int sum=0,n=1; 
    34                
    35       for(i=0;i<M;i++)
    36         {
    37             scanf("%s",&a);
    38               if(a[0]=='I')
    39                {
    40                    n=n*20;
    41                } 
    42               else if(a[0]=='S')
    43                 {scanf(" %d",&t);
    44                   sum=sum+t*60/n;
    45                 }
    46                else if(a[0]=='O')
    47                   n=n/20; 
    48         }     printf("%d
    ",sum);
    49         
    50         }  
    51          return 0;
    52   }
    53   
    54 */
  • 相关阅读:
    力扣Leetcode 3. 无重复字符的最长子串
    力扣Leetcode 21. 合并两个有序链表
    力扣Leetcode 202. 快乐数 -快慢指针 快乐就完事了
    力扣Leetcode 面试题56
    力扣Leetcode 33. 搜索旋转排序数组
    力扣Leetcode 46. 全排列
    python123期末四题编程题 -无空隙回声输出-文件关键行数-字典翻转输出-《沉默的羔羊》之最多单词
    深入理解ReentrantLock的实现原理
    深入图解AQS实现原理和源码分析
    Java:CAS(乐观锁)
  • 原文地址:https://www.cnblogs.com/acmgym/p/3675663.html
Copyright © 2020-2023  润新知