【大数】递归写大数感觉良好
来源:互联网 发布:mac怎么关闭系统弹出 编辑:程序博客网 时间:2024/06/04 20:01
上软件工程课讲到迭代开发突然想到了用递归写大数怎么样(效率和节操是一个价)。
于是写了个加法的,感觉良好.....
#include <iostream>#include <string>using namespace std;class Adder{private:string a;string b;string c;int alen;int blen;void work(int add=0);public:Adder(string& x,string& y); friend ostream& operator << (ostream &o,Adder& a);};Adder::Adder(string& x,string& y):a(x),b(y),c(""),alen(x.length()),blen(y.length()){this->work();}void Adder::work(int add){if(alen) add += a[alen-1] - '0',alen--;if(blen) add += b[blen-1] - '0',blen--;if(alen||blen||add) c.push_back(char(add%10 + '0')),work(add/10); }ostream& operator << (ostream& o,Adder& ad){int len = ad.c.length();for(;len--;) o << ad.c[len];return o;}int main(){string a = "123";string b = "789"; Adder ans(a,b);cout << ans << endl; return 0;}
补上大数乘法的,这个写水了......
#include <iostream>#include <string> using namespace std;class Multer{private:string a;string b;string c;int alen;int blen;void work(int loc=0);int toInt(char x);public:Multer(string& x,string& b);string ans();friend ostream& operator << (ostream& o,Multer& m);}; Multer::Multer(string& x,string& y){a = x;b = y;c = "";alen = x.length();blen = y.length();this->work();}int Multer::toInt(char x){return x - '0';}void Multer::work(int loc){if(!blen) return;for(int i=1;i<=alen;++i){int add = c[i+loc-1] + toInt(a[alen-i]) * toInt(b[blen-1]);if(c.length() <= i+loc-1) c.push_back(add%10);else c[i+loc-1] = add%10;if(add/10 && c.length() <= i+loc) c.push_back(add/10);else c[i+loc] += add/10;}blen--,work(loc+1);}string Multer::ans(){return c;}ostream& operator << (ostream& o,Multer& m){int len = m.c.length();for(;len--;) o << (int)m.c[len];return o;}int main(){return 0;}
强迫症吐槽:C++类里的格式究竟怎么样才行啊...
A:
class Show{public://////private://////};
B:
class Show{public://////private://////};
C:
class Show{public:// // //private:// // //};
最早我是C型的,但是用QT给我用回A类型了.....
- 【大数】递归写大数感觉良好
- 用递归写的大数运算
- 递归大数求模
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- 大数
- HDOJ 1212 Big Number
- 关于集合框架类的学习笔记
- 马老总的PK理论
- 常见适配器的用法(在listview中 ,把三个edittext内容放在简单适配器中)
- 另一个求阶乘
- 【大数】递归写大数感觉良好
- 3.深入PHP中的引用
- python调用os.system执行系统命令,中文输出显示乱码
- 输出满足n=a!+b!+c!的所有三位数
- JAVA构造函数运行解析
- 2013-11-19日志
- android 相对布局
- android学习day01
- oracle 中的CR块详解+