【极基础】大整数 四则运算|代码“渣”实现
来源:互联网 发布:淘宝百度百科 编辑:程序博客网 时间:2024/05/16 19:41
【极基础】大整数 四则运算|代码“渣”实现
加法
======================================
#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int MAXN=10000;int num1[MAXN]={0},num2[MAXN]={0},ans[MAXN+1]={0};string big_add(string str1,string str2){ if(str1=="0"&&str2=="0")return "0"; for(int i=0;i<str1.length();i++)num1[i]=str1[str1.length()-i-1]-'0'; for(int i=0;i<str2.length();i++)num2[i]=str2[str2.length()-i-1]-'0'; int len=max(str1.length(),str2.length()); for(int i=0;i<len;i++) {ans[i]+=num1[i]+num2[i];if(ans[i]>9){ans[i+1]++;ans[i]%=10;}} return "1";}int main(){ string str1,str2; cin>>str1>>str2; big_add(str1,str2); int len=max(str1.length(),str2.length());if(!ans[len])len--; for(int i=len;i>=0;i--)cout<<ans[i];return 0;}
减法
======================================
#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int MAXN=100000;int num1[MAXN]={0},num2[MAXN]={0},ans[MAXN]={0};int big_minus(string str1,string str2){ if(str1==str2)return 0; for(int i=0;i<str1.length();i++)num1[i]=str1[str1.length()-i-1]-'0'; for(int i=0;i<str2.length();i++)num2[i]=str2[str2.length()-i-1]-'0'; for(int i=0;i<str1.length();i++) {ans[i]+=num1[i]-num2[i];if(ans[i]<0){ans[i+1]--;ans[i]+=10;}} return 1;}bool compare_swap(string& str1,string& str2){ if(str1.length()>str2.length())return false; else if(str1.length()<str2.length()||str1<str2){swap(str1,str2);return true;} return false;}int main(){ string str1,str2; cin>>str1>>str2; bool o=compare_swap(str1,str2); if(o)cout<<'-'; if(!big_minus(str1,str2))cout<<0; else {o=true; for(int i=str1.length();i>=0;i--)if(ans[i]==0&&o)continue;else{o=false;cout<<ans[i];}}return 0;}
乘法
======================================
#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int MAXN=100000;int num1[MAXN]={0},num2[MAXN]={0},ans[2*MAXN]={0};int big_mult(string str1,string str2){ if(str1=="0"||str2=="0")return 0; int len1=str1.length(),len2=str2.length(); for(int i=0;i<len1;i++)num1[i]=str1[str1.length()-i-1]-'0'; for(int i=0;i<len2;i++)num2[i]=str2[str2.length()-i-1]-'0'; for(int i=0;i<len1;i++)for(int j=0;j<len2;j++) {ans[i+j]+=num1[i]*num2[j];} for(int i=0;i<len1+len2;i++)if(ans[i]>9){ans[i+1]+=ans[i]/10;ans[i]%=10;} return 1;}int main(){ string str1,str2; cin>>str1>>str2; int len1=str1.length(),len2=str2.length(); if(!big_mult(str1,str2))cout<<0; else {bool o=true; for(int i=len1+len2;i>=0;i--)if(ans[i]==0&&o)continue;else{o=false;cout<<ans[i];}}return 0;}
除法
======================================
#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int MAXN=100000;int ans[MAXN]={0},ans1[MAXN]={0};bool compare(int num1[],int num2[]){ for(int i=MAXN-1;i>=0;i--) if(num1[i]>num2[i])return true; else if(num1[i]<num2[i])return false; return true;}int big_minus(int num1[],int num2[]){ memset(ans1,0,sizeof(ans1)); for(int i=0;i<MAXN;i++) {ans1[i]+=num1[i]-num2[i];if(ans1[i]<0){ans1[i+1]--;ans1[i]+=10;}} return 1;}int big_devition(string str1,string str2){ int num1[MAXN]={0},num2[MAXN]={0};string str3; int len1=str1.length(),len2=str2.length(); for(int i=0;i<len1;i++)num1[i]=str1[str1.length()-i-1]-'0'; for(int i=0;i<len2;i++)num2[i]=str2[str2.length()-i-1]-'0'; if(len1<len2||str1=="0"||compare(num2,num1))return 0; if(len1!=len2)for(int i=len1-len2;i>=-1;i--){num2[len2+i]=num2[2*len2-len1+i];num2[2*len2-len1+i]=0;} for(int i=len1-len2-1;i>=-1;i--) {int k=0; while(compare(num1,num2)){big_minus(num1,num2);memcpy(num1,ans1,sizeof(num1));k++;} for(int j=0;j<=len1;j++)num2[j]=num2[j+1];ans[i+1]=k; } return 1;}int main(){ string str1,str2; cin>>str1>>str2; if(str2=="0")cout<<"INF"; else if(str1==str2)cout<<1; else if(!big_devition(str1,str2))cout<<0; else {bool o=true; for(int i=str1.length();i>=0;i--)if(ans[i]==0&&o)continue;else{o=false;cout<<ans[i];}}return 0;}
阅读全文
0 0
- 【极基础】大整数 四则运算|代码“渣”实现
- java实现大整数的四则运算
- 大整数四则运算
- 大整数四则运算
- 大整数四则运算
- 大整数的四则运算
- 大整数的四则运算
- 大整数的四则运算
- 大整数的四则运算代码(供新手学习…
- 大整数四则运算算法与实现(C++)
- C++实现高精度大整数(大数)的四则运算
- 计算器C#代码(实现整数的四则运算)
- C语言-大整数四则运算
- C/C++ 实现整数四则运算
- 大整数的四则运算(C语言实现)(1)——大整数的输入处理
- 比较好的大整数四则运算
- 数据结构课设之大整数四则运算
- [程序设计实习]大整数的四则运算
- 轮播图再探
- mysql 正则表达式
- Scrapped or attached views may not be recycled. isScrap:false isAttached:true异常
- LeetCode#650 2 Keys Keyboard题解(C++版)
- 小议列表中append()和extend()方法
- 【极基础】大整数 四则运算|代码“渣”实现
- Shape、Selector、Vector
- 机器学习三人行(系列一)--机器学习花样入门
- [51Nod 1394 差和问题]树状数组
- Zynq 7000 自定义ip 的仿真
- 第15周项目4
- html中点击radio后的文字相当于选中该单选按钮如何实现?怎么实现两个redio,选中一个,取消另一个?
- 关于游戏存档之PlayerPrefs
- 742. Closest Leaf in a Binary Tree