题目如下:
问题类似Fibonacci序列,就是兔子生育的问题,只不过兔子长大的月数变成了变量m,然后计算d月后共有多少个兔子。输入整数m,d,输出为d月后兔子的总数。当m=d=0时程序结束。
样例输入
2 3
3 5
1 100
0 0
样例输出
5
9
1267650600228229401496703205376
然后是我写的代码:
#include<stdio.h>
void prt(int n) //顺序输出整数的每一位数
{
if(n<10) printf("%d",n);
else{
n=n/10;
prt(n);
printf("%d",n%10);
}
}
int rabbits(int m,int d){ //计算d月后兔子总数
//int k;
if(d<=m) return d+1;
else{
return (rabbits(m,d-1)+rabbits(m,d-m));
}
}
int main()
{
int m,d;
while(scanf("%d%d",&m,&d)!=EOF){
if(m==0&&d==0)break;
else{
prt(rabbits(m,d));
printf("\n");
}
}
return 0;
}
输入小点的数可以输出,程序也没有问题,但是输入m=1,d=100的时候输出不了了,要怎么处理这么大的数使其可以输出?
问题类似Fibonacci序列,就是兔子生育的问题,只不过兔子长大的月数变成了变量m,然后计算d月后共有多少个兔子。输入整数m,d,输出为d月后兔子的总数。当m=d=0时程序结束。
样例输入
2 3
3 5
1 100
0 0
样例输出
5
9
1267650600228229401496703205376
然后是我写的代码:
#include<stdio.h>
void prt(int n) //顺序输出整数的每一位数
{
if(n<10) printf("%d",n);
else{
n=n/10;
prt(n);
printf("%d",n%10);
}
}
int rabbits(int m,int d){ //计算d月后兔子总数
//int k;
if(d<=m) return d+1;
else{
return (rabbits(m,d-1)+rabbits(m,d-m));
}
}
int main()
{
int m,d;
while(scanf("%d%d",&m,&d)!=EOF){
if(m==0&&d==0)break;
else{
prt(rabbits(m,d));
printf("\n");
}
}
return 0;
}
输入小点的数可以输出,程序也没有问题,但是输入m=1,d=100的时候输出不了了,要怎么处理这么大的数使其可以输出?

