ZSBK
来源:互联网 发布:淘宝漏洞q币充值 编辑:程序博客网 时间:2024/06/02 02:48
#include <iostream>#include <string>using namespace std;class Data{ public: string num; Data(int n){ num = to_string(n); } static Data minus(Data a, Data b){ int n = b.num.length()-1; int m = a.num.length()-1; int s = 0, c = 0; int h = 0; for(int i=n, j=m;i>=0;i--,j--){ int op1 = a.num[j]-'0'-c; int op2 = b.num[i]-'0'; //cout<<"op:"<<op1<<" "<<op2<<endl; if(op1<op2){ c=1; }else{ c=0; } int dif = op1+c*10-op2; s = dif % 10; a.num[j] = s+'0'; h = j; } // Deal with the head for(int i = h-1;c!=0&&i>=0;i--){ int op1 = a.num[i]-'0'; int op2 = c; if(op1<op2){ c=1; }else{ c=0; } int dif = op1+c*10-op2; s = dif% 10; a.num[i] = s+'0'; } return a; } static Data mul(Data a, int b){ int n = a.num.length()-1; int s = 0, c = 0; for(int i=n;i>=0;i--){ int op1 = a.num[i] - '0'; int prd = op1 * b + c; c = prd/10; s = prd%10; a.num[i] = s + '0'; } if(c!=0){ a.num = to_string(c)+a.num; } return a; }};Data left_cows(int n ){ if(n<=1){ Data d1(10); return d1; }else{ Data t(n-1); Data dn_1 = Data::mul(left_cows(n-1),3); Data n_1 = Data::mul(t,2); Data ret = Data::minus(dn_1,n_1); cout<<"n:"<<n<<endl; cout<<"dn_1: "<<dn_1.num<<" "<<"n_1: "<<n_1.num<<endl; cout<<"dn: "<<ret.num<<endl; return ret; } };int main() { Data ret = left_cows(100); cout<<ret.num<<endl; std::cout << "Hello World!\n";}
阅读全文
0 0
- ZSBK
- Intellj IDEA光标变成了insert光标状态
- LeetCode编程练习
- 阅读joomla --- php函数使用记录
- 【Swift】UITextField 输入小数点和位数限制
- 设计模式--原型模式(Prototye)
- ZSBK
- 后台请求保证session不失效
- linux, windows, mac, ios等平台GCC预编译宏判断
- 百度地图API自定义标注(自定义覆盖物或自定义图标)
- Git总结
- C++ 整数(0,1,2,3)和WORD(unsigned short)的区别
- 农民分金条问题
- Erlang程序对中文字符的表示方法
- leetcode-450.delete a node in a BST