1163: 大数A + B [字符串]
时间限制: 1 Sec 内存限制: 128 MB提交: 138 解决: 28 统计
题目描述
给定两个整数
A
A和
B
B,让你求出
A+B
A+B的值。
输入
第一行输入一个整数 T T,代表有 T T组测试数据。
每组数据占两行,第一行输入一个整数 A A,第二行输入一个整数 B B。
注: 1<=T<=30,1<=A,B<=10666666 1<=T<=30,1<=A,B<=10666666。
输出
对每组数据,输出
A+B
A+B的最后结果。
样例输入
1
233333333333333333333333333333333333333
666666666666666666666666666666666666666
样例输出
899999999999999999999999999999999999999
取模的那个数可以变成其他的,例如变成8就是八进制。。。。
AC代码:
#include<iostream>
#include<string>
using namespace std;
string Plus(string num1,string num2)
{
if(num1.size()<num2.size())
{
string temp=num1;
num1=num2;
num2=temp;
}
int length1=num1.size(),length2=num2.size(),flag=0,a,b,sum;
while(length1>0)
{
a=num1[length1-1]-'0';
if(length2>0)
b=num2[length2-1]-'0';
else
b=0;
sum=a+b+flag;
if(sum>=10)
{
num1[length1-1]='0'+sum%10;
flag=1;
}else{
num1[length1-1]='0'+sum;
flag=0;
}
length1--;
length2--;
}
if(flag==1)
num1="1"+num1;
return num1;
}
int main()
{
int t;
string num1;
string num2;
while(~scanf("%d",&t))
{
while(t--)
{
cin>>num1>>num2;
cout<<Plus(num1,num2)<<endl;
}
}
return 0;
}