Sicily 1029 Rabbit
来源:互联网 发布:图片表格识别软件 编辑:程序博客网 时间:2024/06/18 04:19
题目:http://soj.me/1029
题目大意:开始时有1对成年兔子,每一对成年的兔子每个月可以生一对小兔子,给出m和d(m<=10,d<=100),m表示小兔子在m个月以后成年,问d个月后共有多少对兔子(假设兔子不会死亡)。
算法实现:由于m和d都很小,可以直接模拟。num[0]表示成年兔子的数目,num[i]表示还有i个月成年的兔子的数目,更新d次num数组即可。最后的总数可能会很大,所以要用高精度的方法。
具体代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#define get_max(a,b) ((a)>(b)?(a):(b))using namespace std;const int maxn=200;struct bign{ int len,s[maxn]; bign() { memset(s,0,sizeof(s)); len=1; } bign(int num) { *this=num; } bign operator = (const char *num) { len=strlen(num); for(int i=0;i<len;i++) s[i]=num[len-i-1]-'0'; return *this; } bign operator = (int num) { char s[maxn]; sprintf(s,"%d",num); *this=s; return *this; } string str() const { string res=""; for(int i=0;i<len;i++) res=(char)(s[i]+'0')+res; if(res=="") res="0"; return res; } bign operator + (const bign &b) const { int max_len=get_max(len,b.len); bign c; c.len=0; for(int i=0,g=0;g||i<max_len;i++) { int x=g; if(i<len) x+=s[i]; if(i<b.len) x+=b.s[i]; c.s[c.len++]=x%10; g=x/10; } return c; }};ostream& operator << (ostream &out,const bign &x){ out<<x.str(); return out;}int main(){ int m,d; bign num[11]; while(cin>>m>>d) { if(m==0&&d==0) break; num[0]=1;//num[0]表示成年的兔子的数目 for(int i=1;i<=m;i++) num[i]=0;//num[i]表示还有i个月成年的兔子的数目 for(int i=1;i<=d;i++) { num[0]=num[0]+num[1]; for(int i=1;i<m;i++) num[i]=num[i+1]; num[m]=num[0]; } bign sum=0; for(int i=0;i<=m;i++) sum=sum+num[i]; cout<<sum<<endl; } return 0;}
- Sicily 1029 Rabbit
- sicily 1029 Rabbit
- Sicily 1029 Rabbit
- Sicily 1029. Rabbit
- [sicily online]1029. Rabbit
- Sicily 1029. Rabbit
- Sicily 1029. Rabbit
- sicily 1029.Rabbit
- Sicily 1029. Rabbit
- [sicily]1029. Rabbit
- sicily 1029. Rabbit
- Sicily 1029 Rabbit(高精度运算+公式递推)
- Sicily 1029. Rabbit --by rupeng
- Sicily.1029. Rabbit(递推)
- Sicily 1029. Rabbit【高精度加法】
- Rabbit
- Rabbit
- rabbit
- Python 的 and-or 技巧
- 委托----http://www.cnblogs.com/superpcer/archive/2011/06/06/2073751.html
- ExtJS 开发调试工具大全
- spring整合struts2方法及原理
- OSCHINA 联通代理节点的 Nginx 配置
- Sicily 1029 Rabbit
- 深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)
- struts2 防止表单重复提交
- 进程与线程的一个简单解释
- jquerymobile 基础教程
- 深入浅出交换类排序算法(冒泡排序,快速排序)
- 获取相册图片及路径
- 从服务器上请求json数据,并解析json数据
- 深入浅出选择类排序算法(简单选择排序,堆排序)