高精度可以直接使用java,java的相关基础知识还需要掌握
如果使用c++就要用字符串形式读入,然后转化为数字数组模拟手算过程,一般0号元素记录数组的长度
高精度的储存:
注意是倒序存储
void init(int a[]){
string s;
cin>>s;//读入字符串s
a[0]=s.length();//用a[0]计算字符串s的位数
for(i=1;i<=a[0];i++)
a[i]=s[a[0]-i]-'0';//将数串s转换为数组a,并倒序存储.
}
高精度数的比较
int compare (int a[],int b[]){
if (a[0]>b[0]) return 1;//a的位数大于b则a比b大
if (a[0]<b[0]) return -1;//a的位数小于b则a比b小
for(int i=a[0];i>0;i--) //从高位到低位比较
{ if (a[i]>b[i]) return 1;
if (a[i]<b[i]) return -1;
}
return 0;//各位都相等则两数相等。
}
高精度输出:
void print(int a[]) {
int i;
if (a[0]==0){
cout<<0<<endl;
return;
}
for(i=a[0];i>0;i--) cout<<a[i];
cout<<endl;
return ;
}
高精度加法:
void jia(int a[],int b[]) {//计算a=a+b
int