模板:大整数除法
2014-01-13 10:01
260 查看
string sub(string s1,string s2) { int flag = 0; if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2)) { flag = 1; string temp=s1; s1=s2; s2=temp; } int i,j; for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--) { s1[i]=char(s1[i]-(j>=0?s2[j]-'0':0)); //注意细节 if(s1[i]-'0'<0) { s1[i]=char(s1[i] + 10); s1[i-1]--; } } for(i = 0; i < s1.length(); i++) { if(s1[i] != '0') break; } if(i == s1.length()) i = s1.length()-1; s1 = s1.substr(i); if(flag) s1 = "-" + s1; return s1; } string sum(string s1,string s2) { if(s1.length()<s2.length()) { string temp=s1; s1=s2; s2=temp; } int i,j; for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--) { s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0)); //注意细节 if(s1[i]-'0'>=10) { s1[i]=char((s1[i]-'0')%10+'0'); if(i) s1[i-1]++; else s1='1'+s1; } } return s1; } string div(string s1,string s2) { string res = "0"; if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2)) { return "0"; } int i; int sub_length = s1.length() - s2.length(); for(i = sub_length; i >= 0; i--) { string s3(i,'0'); string s4 = s2 + s3; do { string temp = sub(s1,s4); if(temp[0] == '-') break; else { s1 = temp; res = sum(res,("1" + s3)); } }while(1); } return res; }
相关文章推荐
- 试除法整数分解 筛法整数分解 PollardRho大整数分解【模板】
- 整数的除法和取模
- 整数划分模板
- HDU1028 Ignatius and the Princess III(整数划分,母函数模板题,无限制)
- 利用除法计算整数的位数
- 大整数模板
- hdu 1002 大整数加法模板
- 位运算之美——用+,-和位运算实现正整数除法和取模(二)
- hdu 1164 试除法对整数分解
- 大整数的加减乘法,没有除法,你想累死我啊?
- 10.3 设计一个类模板 store <T>用于存储某一类型的数据,并以整数和字符串进行实 例化
- 位运算之美——用+,-和位运算实现整数除法和取模(一)
- php对浮点数小数取整,php除法取整数
- 大整数除法
- 带符号整数的除法与余数
- 不用除法来实现整数的除法运算
- 整数除法(除以2的幂, 除以非2的幂)
- python中整数除法的正负号
- 3:十进制数转二进制数(类似大整数除法)
- PHP - 除法取整数