华师一附中OI组
标题:
高精度加法
[打印本页]
作者:
admin
时间:
2018-4-13 19:42
标题:
高精度加法
#include<iostream>
using namespace std;
string s1,s2,s3;
int i,j,x1,x2,x3;
int l1,l2;
int main()
{
cin>>s1>>s2;
///用字符串的唯一目的就是读入方便
if (s1.size()<s2.size()) swap(s1,s2);
///比较长短,长的放前面
l1=s1.size();
l2=s2.size();
for (i=1; i<=l1-l2; i++) s2='0'+s2;
///短的前面添0以便对齐
///cout<<s1<<endl<<s2; 输出检查
j=0; ///进位
for (i=l1-1; i>=0; i--)
///从右往左加
{
x1=s1[i]-'0';///字符变数字
x2=s2[i]-'0';
x3=x1+x2+j;
j=x3/10;///进位处理
x3=x3%10;
s3=char(x3+'0')+s3;
///数字变字符并加在结果左边
}
if (j==1) s3='1'+s3;///最高位处理
cout<<s3;
return 0;
}
复制代码
作者:
WJL
时间:
2018-8-12 20:45
#include<iostream>
using namespace std;
const int maxn=510;
int a[maxn],b[maxn],c[maxn];
string s1,s2,s3;
int l1,l2,l3;
int x;
int main()
{
cin>>s1>>s2;
l1=s1.size();
l2=s2.size();
for(int i=0;i<=l1-1;i++) a[i]=s1[l1-i-1]-'0';
for(int j=0;j<=l2-1;j++) b[j]=s2[l2-j-1]-'0';
l3=l1>l2?l1:l2;
for(int i=0;i<=l3-1;i++)
c[i]=a[i]+b[i];
for(int i=0;i<=l3;i++)
{
x=c[i];
c[i]=x%10;
c[i+1]+=x/10;
}
l3=maxn-1;
while(c[l3]==0&&l3>0)
l3--;
for(int i=l3;i>=0;i--)
cout<<c[i];
return 0;
}
复制代码
作者:
WJL
时间:
2018-8-12 20:46
WJL 发表于 2018-8-12 20:45
数组
做法
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2