首页 > 代码库 > 高精度运算
高精度运算
#include<bits/stdc++.h> using namespace std; const int N=1e2+7; int a[N],b[N],c[N],t[N]; void init(int t[]) //输入 { string s; cin>>s; memset(t,0,sizeof(t)); t[0]=s.size(); for(int i=1;i<=t[0];i++) t[i]=s[t[0]-i]-‘0‘; //倒叙输入 } void Highadd() //加法 { memset(c,0,sizeof(c)); int len=1; int x=0; while(len<=a[0]||len<=b[0]) { c[len]=a[len]+b[len]+x; x=c[len]/10; c[len]%=10; len++; } c[len]=x; if(c[len]==0) len--; for(int i=len;i>=1;i--) cout<<c[i]; cout<<endl; } void Highsub() //减法 (规定a>b情况) { memset(c,0,sizeof(c)); int len=1; while(len<=a[0]||len<=b[0]) { if(a[len]<b[len]) //不足向上借位 { a[len]+=10; a[len+1]--; } c[len]=a[len]-b[len]; len++; } while((c[len]==0)&&(len>1)) len--; for(int i=len;i>=1;i--) cout<<c[i]; cout<<endl; } void Highmul() { memset(c,0,sizeof(c)); for(int i=1;i<=a[0];i++) { int x=0; for(int j=1;j<=b[0];j++) { c[i+j-1]=a[i]*b[j]+x+c[i+j-1]; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+b[0]]=x; } int len=a[0]+b[0]; while((c[len]==0)&&len>1) len--; for(int i=len;i>=1;i--) cout<<c[i]; cout<<endl; } int main() { init(a); init(b); Highadd(); Highsub(); Highmul(); return 0; }
高精度运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。