1 条题解
-
1
我的第一篇题解:
可以用python直接过高精加的本质其实就是竖式,不妨画个表:13 +28
整个竖式本质就是从右往左加 3+8==11 进位,因此十位+1.得到41 高精加的本质就是把这个过程用代码写出来
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main(){ char a1[10010],b1[10010]; int a[10010],b[10010],c[10010],lena,lenb,lenc,i,x=0;//a是加数1 b是加数2 c是和; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c));//清空整个数。 scanf("%s",a1); scanf("%s",b1); lena=strlen(a1); lenb=strlen(b1);//输入并统计长度,用于计算。 for(i=1;i<=lena;i++) a[i]=a1[lena-i]-'0'; for(i=1;i<=lenb;i++) b[i]=b1[lenb-i]-'0'; lenc=1;//计算整个 while(lenc<=lena||lenc<=lenb){ c[lenc]=a[lenc]+b[lenc]+x; x=c[lenc]/10; c[lenc]%=10; lenc++; }//计算进位并且给和字符串留出空间 c[lenc]=x; while(c[lenc]==0&&lenc!=1){ lenc--;} for(i=lenc;i>=1;i--){ cout<<c[i]; }//输出 }
高精度是用于避免超过long long 数组限度而导致出现。非常简单
此代码是我好久之前写的,很烂,不要抄
信息
- ID
- 330
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 10
- 已通过
- 8
- 上传者