记录编号 |
232429 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[SDOI 2007] 兔子 |
最终得分 |
100 |
用户昵称 |
liu_runda |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.019 s |
提交时间 |
2016-03-01 12:12:49 |
内存使用 |
0.44 MiB |
显示代码纯文本
#include<cstdio>
int ans[200][200];int m;
void add(int a[],int b[],int c[]){
c[0]=a[0];
if(b[0]>a[0])c[0]=b[0];
for(int i=1;i<c[0];++i)c[i]=a[i]+b[i];
for(int i=1;i<c[0];++i){
if(c[i]>9&&i==c[0]-1)c[0]++;
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
void f(int n){
if(n<=1)return;
int i=n-1,j=n-m;
if(j<1)j=1;
if(ans[i][0]==0)f(i);
if(ans[j][0]==0)f(j);
add(ans[i],ans[j],ans[n]);
}
void print(int a[]){
for(int i=a[0]-1;i;--i)printf("%d",a[i]);
}
int main(){
freopen("rabbit.in","r",stdin);
freopen("rabbit.out","w",stdout);
int d;
scanf("%d%d",&m,&d);
ans[1][0]=2;ans[1][1]=1;
f(d+1);
print(ans[d+1]);
fclose(stdin);fclose(stdout);
return 0;
}