高精度加法
高精度系列居然还没A完,呜呜、、、
例题
http://10.12.2.188/JudgeOnline/problem.php?id=1125
代码
#include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> using namespace std; int a[1000]; int b[1000]; char strrrrrrrrr[1000]; int tmp; void pre(int x[],char strrrrrrrrr[]) { x[0]=strlen(strrrrrrrrr); for (int i=1;i<=x[0];i++) x[i]=int(strrrrrrrrr[x[0]-i])-48; } int main() { while (cin>>strrrrrrrrr) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); pre(a,strrrrrrrrr); cin>>strrrrrrrrr; pre(b,strrrrrrrrr); //======================== a[0]=max(a[0],b[0]); for (int i=1;i<=a[0];i++) { a[i]=a[i]+b[i]+tmp; tmp=a[i]/10; a[i]%=10; } while (tmp>0) {a[0]++;a[a[0]]=tmp%10;tmp/=10;} //======================== for (int i=a[0];i>=1;i--) cout<<a[i]; cout<<endl; } return 0; }
结果
注意点
1.读入部分用函数写的话,数组调用进函数的三种方式:
①定义struct
②void pre(int a[])
③void pre(int* a)
2.str是保留字,不能乱用(请无视我的一堆r)
3.读入以后要减去48,int('0')是等于48的,而不是0
4.memset格式是memset(a,0,sizeof(a));第二第三项不要弄反了
5.注意输入格式,虽然字符串是读到空格停止