小火山的计算能力

来源:互联网 发布:绝对领域软件 编辑:程序博客网 时间:2024/05/15 21:35

小火山的计算能力

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 471  Solved: 123

Description

别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。

Input

首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。

Output

输出运算结果。

Sample Input

21+12+1-1

Sample Output

22

这道题挺坑的哭刚开始想的是先输出字符串,然后再逐个找出数字跟字符,然而比赛时并没有敲出来具体代码。。后来先输入数字,再输入符号,结果是对了,然而超时。。赛后看别人的解题思路,还是要先整体输入。。看代码:

#include<cstdio>#include<cstring>int main(){int t;char ch[205];scanf("%d",&t);while(t--){scanf("%s",ch);int i=0,l=strlen(ch);long long sum=0;//最后总和 long long ans=0;//暂存每一位数while(ch[i]>='0'&&ch[i]<='9') {//找第一个数sum=sum*10+ch[i]-'0';i++;//一直循环到符号位 }char sign;//符号 while(i<l){sign=ch[i];i++;ans=0;while(ch[i]>='0'&&ch[i]<='9') {ans=ans*10+ch[i]-'0';i++;//与找第一个数类似 }if(sign=='-')sum-=ans;if(sign=='+') sum+=ans;}printf("%lld\n",sum);}return 0;}
再来个比赛时敲出来的超时代码!!欢迎评价。。
#include<cstdio>long long a,b,k,sum;int main(){int t;char s;    scanf("%d",&t);    while(t--){scanf("%lld",&a);    while(scanf("%c",&s)&&(s!='\n')){    scanf("%lld",&b);    if(s=='+')    a+=b;elsea-=b;}    printf("%lld\n",a);}    return 0;  }


0 0
原创粉丝点击