A New Game

来源:互联网 发布:测试脸型软件 编辑:程序博客网 时间:2024/06/17 02:41

A New Game

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

今年集训队有一个RE大神,他特别喜欢RE。当然不只是Runtime Error,还有R和E两个字母,只要和这两个字母有关系的他基本上都喜欢。
所以今天出题的Administrator就制造了这样一种游戏。首先会有n张卡片给出,每张卡片上有一个数。依次将这n张卡片放在一个盘子上,下面的卡片会覆盖上面的卡片。然后会有m个操作,分为两种:
1、 R:这种操作是将新的一张带有数字的卡片放到最上面那张卡片的上面。当然如果一张卡片都没有,它就是第一个。然后输出它下面两张卡片上的数之和。如果它下面卡片个数小于二,有一个输出一个,没有就输出“NONE”。
2、 E:这种操作是将最上面的卡片扔掉,然后输出最上面卡片上的数字与最下面卡片上的数字之差的绝对值。如果删掉后没有数字就输出“NONE”。如果当要删掉卡片时没有卡片则输出“Runtime Error”。
请帮RE大神完成输入数据给出的操作。

输入

 输入有多组。每一组第一行为n。第二行为n个数。第三行为m,然后有m行,每行是一个操作。所有数均为正整数且小于10000。

输出

 输出m行每行一个数。输出要输出的数。

示例输入

31 2 38R 4EEEEER 10R 10

示例输出

5210NONERuntime ErrorNONE10

提示

水题,读懂题意按步骤即可,须注意当每次输入操作R或E时,前面要用getchar()语句,来接受上次命令的回车,否则会出错。
#include <stdio.h>#include <math.h>int main(){int num[10000],cnt;int n,m,k;char op;while(scanf("%d",&n)!=EOF){for(k=0;k<n;k++)scanf("%d",&num[k]);scanf("%d",&m);k=n;while(m--){getchar();scanf("%c",&op);if('R'==op){scanf("%d",&cnt);num[k++]=cnt;if(k>=3)printf("%d\n",num[k-2]+num[k-3]);else if(k==2)printf("%d\n",num[0]);else printf("NONE\n");}else if('E'==op){if(k==0)printf("Runtime Error\n");else{k--;if(k==0)printf("NONE\n");elseprintf("%d\n",abs(num[0]-num[k-1]));}}}}return 0;}


0 0
原创粉丝点击