HDU1002 大数相加
題目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1002
#include <iostream>
#include <string>
using namespace std;
void Add(string a,string b,char sum[],int& count)
{//大數加法
int len1 = a.length();//數a的長度
int len2 = b.length();//數b的長度
int i = len1-1,j = len2-1,temp = 0,carryIn = 0;//初始進位為0
count = 0;
while(i>=0&&j>=0)
{
temp = a[i]-'0'+b[j]-'0'+carryIn;//計算當前位
sum[count++] = temp%10+'0';
carryIn = temp/10;//計算進位
--i;
--j;
}
if(i>=0)
{
while(i>=0)
{
temp = a[i]-'0'+carryIn;
sum[count++] = temp%10+'0';
carryIn = temp/10;
--i;
}
}
if(j>=0)
{
while(j>=0)
{
temp = b[j]-'0'+carryIn;
sum[count++] = temp%10+'0';
carryIn = temp/10;
--j;
}
}
if(carryIn>0)
{
sum[count] = '1';
}
}
void reversePrint(char arr[],int len)
{//逆向輸出
for(int i=len-1;i>=0;--i)
cout<<arr[i];
cout<<endl;
}
int main()
{
string a,b;
char sum[2000];
memset(sum,'0',2000);
int nCount = 0;
int caseNum,curCase=0;
cin>>caseNum;
do
{
curCase++;
cin>>a>>b;
Add(a,b,sum,nCount);
cout<<"Case "<<curCase<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
reversePrint(sum,nCount);
if(curCase<caseNum)
cout<<endl;
}while(curCase<caseNum);
return 0;
}
總結
以上是生活随笔為你收集整理的HDU1002 大数相加的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Farseer:一个用于Silverli
- 下一篇: 服务器:高端增势明显 行业大单涌现