您的位置:首页 > 编程语言 > C语言/C++

洛谷 P2788 数学1(math1)- 加减算式

2017-12-13 11:01 489 查看


水题一道 也是第一篇博客 

欢迎大牛来喷

思路非常简单 

把字符串拆为单个数字 譬如算式1+2-3+1998可以拆为1,+2,-3,+1998

将各个数字单独转换为int型 

最后求和

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
char a[60010];//注意字符串范围
int main()
{
cin>>a;
int flag=strlen(a)-1,tmp,ts=0;
long long sum=0;
while(flag>=0)
{
tmp=flag;
for(flag;flag>=0&&a[flag]>='0'&&a[flag]<='9';flag--);//从后遍历 flag是符号下标 flag+1是数字第一位下标 tmp是数字最后一位下标
for(int i=tmp,j=0;i>flag;i--,j++)
{
ts+=(a[i]-'0')*pow(10,j);//将字符型数转换为整形数字和
}
if(a[flag]=='-') //注意 如果flag=0时要么是数字要么是 - 号 不会有正号 正数直接交给else处理
sum-=ts;
else
sum+=ts;
ts=0;
flag--;
}
cout<<sum<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 洛谷 数学 acm