大数运算(三)——大数相除求余数和商
来源:互联网 发布:手机电影软件哪个最好 编辑:程序博客网 时间:2024/06/08 16:00
描述:
输入两个超长的整型构成的字符串,使用空格隔开,求前者除以后者的余数
输入输出格式要求
输入的字符串最大长度为100个字符,输出商和余数,之间用空格隔开,如果结果异常输出NULL
样例:
输入:123456789 23456789
输出:5 6172844
#include<iostream>#include<string>using namespace std;bool Compare(string first,string second){ int i=0; while('0'==first[i]) i++; first.erase(0,i); i=0; while('0'==second[i]) i++; second.erase(0,i); int len1=first.size(); int len2=second.size(); if(len1<len2) return false; else if(len1==len2 && first<second) return false; return true;}string Subtraction(string s1,string s2){ if(s1==s2) return "0"; int len1=s1.size(); int len2=s2.size(); for(int i=len2-1;i>=0;i--) { s1[len1-1-i] ='0'+ s1[len1-1-i] -s2[len2-1-i]; //不要忘了加‘0’ } //cout<<s1<<endl; for(int i=len1-1;i>=0;i--) { if(s1[i]<'0') { s1[i] += 10; s1[i-1]--; } } int i=0; while(s1[i]=='0') i++; s1.erase(0,i); //去掉字符串前面的0 //cout<<s1<<endl; return s1;}void BigDivision(string a,string b){ string result,s; //result用来保存商,s用来保存每次的运算时的被除数及最后的余数 int count,i; if("0"==b) { //cout<<"Error,divisor can not be zero!"<<endl; cout<<"NULL"<<endl; return; } if(!Compare(a,b)) { //cout<<"商:"<<0<<",余数:"<<a<<endl; cout<<0<<" "<<a<<endl; return; } int len=a.size(); for(int i=0;i<len;i++) { count=0; s.push_back(a[i]); while(Compare(s,b)) { s=Subtraction(s,b); count++; } result+=char(count+'0'); //s>b时加每次相除得到的商或者,s<b时补0 } //cout<<s<<endl; i=0; while('0'==result[i]) i++; result.erase(0,i); i=0; while('0'==s[i]) i++; s.erase(0,i); //cout<<"商为:"<<result<<",余数: "<<s<<endl; cout<<result<<" "<<s<<endl;}int main(){ string str1,str2; while(cin>>str1>>str2) //cout<<subtraction(str1,str2)<<endl; BigDivision(str1,str2);}
程序运行结果:
0 0
- 大数运算(三)——大数相除求余数和商
- 大数相除求余数
- 大数求商和余数
- 【笔试/面试】—— 从大数相减到大数求除(大数求余)
- 大数相除求商求余数
- 大数相除和求余 (高精度/ int型)
- 大数加、减、乘、除和求余运算
- 求大数余数方法
- 大数问题(三)(大数相除)
- NYOJ - 205 - 求余数(大数求余数)
- 大数运算(三)
- 大数运算(6)——大数阶乘(求位数)
- 大数运算(7)——大数阶乘(求阶乘)
- 大数运算(二)——大数相减
- 大数运算——加减乘除和求平方根
- 高精度问题之大数相除和求余
- 如何求大数的余数
- HDU 1212 求大数余数
- oracle客户端的安装
- HDU 5441 Travel
- Web项目从Tomcat迁移到weblogic 10.3出现的错误
- hadoop 数据倾斜
- 自定义控件其实很简单3/4
- 大数运算(三)——大数相除求余数和商
- hdu5438 -ponds -水题
- jvm 调优
- C++11
- Android Activity启动慢
- 查看端口被哪个进程占用
- Java中类对象之间的类型转换
- 彩票35选7
- 学习linux内核,都看哪些书?