题目描述
高精度加法,x相当于a+b problem,不用考虑负数
(https://www.luogu.org/problemnew/show/P1601)
此题就是进行数位模拟,代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
char a1[2009],b1[2009];
int a[2009],b[2009],c[2009];
int main()
{
int hh;
scanf("%d",&hh);
scanf("%s",a1);
scanf("%s",b1);
if(a1[0]==48 && b1[0]==48)
{
printf("0");
return 0;
}
int lena=strlen(a1);
int lenb=strlen(b1);
for(int i=0;i<lena;i++)
{
a[lena-i-1]=int(a1[i]-48);//把char类型转化成int类型并倒位
}
for(int i=0;i<lenb;i++)
{
b[lenb-i-1]=int(b1[i]-48);
}
int m=max(lena,lenb);
for(int i=0;i<m;i++)
{
c[i]+=a[i]+b[i];//先加
while(c[i]>=hh)
{
c[i+1]++;在进位
c[i]-=hh;
}
}
m++;
while(c[m]==0)
{
m--;//去除前导0
}
for(int i=m;i>=0;i--)
{
printf("%d",c[i]);
}
return 0;
}
很简单的题但就是要把模板记下来,会默写