问题 B: A+B
时间限制: 1 Sec 内存限制: 32 MB献花: 98 解决: 76
[ 献花][ 花圈][ TK题库]
题目描述
给定两个整数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
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
int change(char *a){
int n=0;
n=strlen(a);
int sum=0;
for(int i=n-1;i>=0;i--){
int k=0;
k=*(a+i)-'0';
sum+=k*pow(10,n-i-1);
}
return sum;
}
int main(){
//char a[50]={};
//char b[50]={};
char *t1;
char *t2;
t1=(char*)malloc(50*sizeof(char));
t2=(char*)malloc(50*sizeof(char));
while(scanf("%s%s",t1,t2)!=EOF){
int n=0,m=0;
n=strlen(t1);
m=strlen(t2);
//char c[50]={};
//char d[50]={};
char *k1;
char *k2;
k1=(char*)malloc(50*sizeof(char));
k2=(char*)malloc(50*sizeof(char));
int j=0;
for(int i=0;i<n;i++){
if((*(t1+i)<='9')&&(*(t1+i)>='0')){
*(k1+j)=*(t1+i);
j++;
}
}
*(k1+j)='\0';
int a1=0;
a1=change(k1);
int k=0;
for(int t=0;t<m;t++){
if((*(t2+t)<='9')&&(*(t2+t)>='0')){
*(k2+k)=*(t2+t);
k++;
}
}
*(k2+k)='\0';
int b1=0;
b1=change(k2);
if(*t1=='-'&&*t2!='-'){
cout<<b1-a1<<endl;
}else if(*t1=='-'&&*t2=='-'){
cout<<'-'<<a1+b1<<endl;
}else if(*t1!='-'&&*t2!='-'){
cout<<b1+a1<<endl;
}else if(*t1!='-'&&*t2=='-'){
cout<<a1-b1<<endl;
}
}
//cin.get();
return 0;
}