高精度! 模板代码!
2017-11-09 07:57
274 查看
前言
高精高精模拟竖式的高精!本人在此提供模板
细节不多讲
需要注意的是
一切代码的格式都是a(+ - / *)b=c的形式t=temp 中间变量
代码
减法
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=100100; int a[maxn],b[maxn],c[maxn]; int sizea,sizeb,sizec; void swapp(){ int sizet=sizeb,t[sizeb+1]; memset(t,0,sizeof(t)); for(int i=1;i<=sizeb;i++) t[i]=b[i]; memset(b,0,sizeof(b)); for(int i=1;i<=sizea;i++) b[i]=a[i]; sizeb=sizea; memset(a,0,sizeof(a)); for(int i=1;i<=sizet;i++) a[i]=t[i]; sizea=sizet; } void init(){ string sa,sb; cin>>sa>>sb; sizea=sa.size(); sizeb=sb.size(); for(int i=0,j=sizea;i<sizea;i++,j--) a[j]=sa[i]-'0'; for(int i=0,j=sizeb;i<sizeb;i++,j--) b[j]=sb[i]-'0'; } void comp(){ if(sizeb>sizea){ cout<<"-"; swapp(); } else if(sizeb==sizea){ int temp=sizeb; while(a[temp]==b[temp]) temp--; if(a[temp]<b[temp]){ cout<<"-"; swapp(); } } } void make_(){ //a>b for(int i=1;i<=sizea;i++){ c[i]=a[i]-b[i]; if(c[i]<0){ c[i]+=10; int temp=i+1; while(!a[temp]) a[temp++]=9; a[temp]--; } } sizec=sizea; while(!c[sizec]) sizec--; } void fckitout(){ for(int i=sizec;i>0;i--) cout<<c[i]; } int main(){ init(); comp(); make_(); fckitout(); return 0; }
加法
#include<iostream> using namespace std; const int maxn=100001; string s1,s2; int a[maxn],b[maxn],c[maxn]; int sizea,sizeb,sizec; bool aa,bb; void init(){ bool ok=false; sizea=s1.size(); sizeb=s2.size(); for(int i=0,j=sizea;i<sizea;i++,j--){ if(s1[i]=='-'){ aa=true; continue; } if(s1[i]-'0'>0) ok=true; if(!ok&&s1[i]=='0') continue; a[j]=s1[i]-'0'; } if(aa==true) sizea--; if(ok==false) sizea=1; ok=false; for(int i=0,j=sizeb;i<sizeb;i++,j--){ if(s2[i]=='-'){ bb=true; continue; } if(s2[i]-'0'>0) ok=true; if(!ok&&s2[i]=='0') continue; b[j]=s2[i]-'0'; } if(bb==1) sizeb--; if(ok==false) sizeb=1; } void jia(){ int temp=0; sizec=max(sizea,sizeb); for(int i=1;i<=sizec;i++){ c[i]=a[i]+b[i]+temp; temp=c[i]/10; c[i]%=10; } if(temp!=0){ sizec++; c[sizec]=temp; } } int main(){ cin>>s1; cin>>s2; init(); jia(); for(int i=sizec;i>=1;i--) cout<<c[i]; cout<<endl; return 0; }
乘法
//还没过样例~ //明儿个noip 这坑就放这儿了
除法
//怎么想noip也不会考的吧 //不用学的吧 //嗯不用不用不考不考
相关文章推荐
- 高精度大数的模板--c++代码
- 模板和代码优化(一)
- C++箴言:从模板中分离出参数无关的代码
- GridView模板列,如何在后台代码中添加客户端事件,执行sql函数,格式化数据
- 高精度压位模板
- 制作自己的代码模板
- AndroidStudio 中使用代码模板(live templates)
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
- 高精度模板
- 创建Xcode的工程模板和代码模板
- Android service 代码模板
- C++ - 非类型模板参数(nontype template parameters) 使用 及 代码
- 2018-03-08,模板消息推送,全代码,多多指教
- 【代码模板004】VBA快速删除工作表
- 模板中直接SQL调用数据代码
- 获取模板所在目录 Monxin专用(PHP代码函数)
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
- 配置eclipse的java代码注解的模板