HDU-3787(字符串模拟)

Problem Description
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
 
Input
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
 
Output
请计算A+B的结果,并以正常形式输出,每组数据占一行。
 
Sample Input
-234,567,890 123,456,789
1,234 2,345,678
 
Sample Output
-111111101
2346912

思路:
字符串模拟,做好相应的字符转换就好

#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
using namespace std; int main()
{
string num1,num2;
while(cin>>num1>>num2)
{
//判断正负号
int flag1 = ,flag2 = ;
if(num1[] == '-') flag1 = -;
if(num2[] == '-') flag2 = -;
//判断两数字的长度
int len1=,len2=;
for(int i = ;i < num1.length();i++)
if(num1[i]>=''&&num1[i]<='') len1++;
for(int i = ;i < num2.length();i++)
if(num2[i]>=''&&num2[i]<='') len2++;
//分别求出两个数的绝对值
__int64 number1=,number2=;
for(int i = ;i < num1.length();i++) {
if(num1[i]>=''&&num1[i]<='') {
number1 += (num1[i]-'')*pow(,--len1);
}
}
for(int i = ;i < num2.length();i++) {
if(num2[i]>=''&&num2[i]<='') {
number2 += (num2[i]-'')*pow(,--len2);
}
}
number1 *= flag1;
number2 *= flag2;
printf("%I64d\n",number1+number2);
}
return ;
}
上一篇:CSDN博客图片水印自定义及去除方法


下一篇:word之高级