-
题目描述:
-
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
-
输入:
-
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
-
输出:
-
请计算A+B的结果,并以正常形式输出,每组数据占一行。
-
样例输入:
-
-234,567,890 123,456,789 1,234 2,345,678
-
样例输出:
-
-111111101 2346912
本题大意是计算A和B之和,只不过A,B不是用户直接输入的整数。我将用户输入的字符作为string类型,这样求其长度和索引对应的元素方便一些。分析:首先求出整形表示的A,B,然后相加,输出和即可。从左到右处理字符串A,B,第一个字符可能是符号位,所以直接跳过,遇到数字的话,将已经得到的数左移一位加上该字符对应的十进制数。左移一位在十进制里面就是乘以10。遇到逗号,直接跳过,但要记录逗号的个数。扫描完成之后,再处理第一个字符。如果是负号,就求其值的相反数。否则的话,将已经得到的数加上首个字符的num次方,num的值为字符串长度-逗号个数 - 1
#include <iostream> #include <cmath> using namespace std; int main(){ string str1,str2; while(cin>>str1>>str2){ int a=0,b=0,result=0; int countComma = 0; for(int i=1;i<str1.length();i++){ if(str1[i] == ','){ countComma ++; continue; } a = a*10 + (str1[i]-'0'); } if(str1[0] == '-') a = 0 - a; else a = a + (str1[0]-'0')*pow(10,str1.length()-countComma-1); countComma = 0; for(int i=1;i<str2.length();i++){ if(str2[i] == ','){ countComma ++; continue; } b = b*10 + (str2[i]-'0'); } if(str2[0] == '-') b = 0 - b; else b = b + (str2[0]-'0')*pow(10,str2.length()-countComma-1); result = a + b; cout<<result<<endl; } return 0; }