ZZY的宠物
Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 99 Solved: 51
[ Submit][ Status][ Web Board]
Description
ZZY领养了一对刚刚出生的不知名小宠物..巨萌巨可爱!!...小宠物的生命为5个单位时间并且不会在中间出意外翘辫子(如: 从0出生能活到5但活不到6)..小宠物经过2个单位时间成熟..刚刚成熟的一对小宠物能立即生育6只新的小宠物(如: 从0出生的一对在2时成熟并进行第一次生育)...小宠物是很忠诚的..不会在中途换伴侣..每对小宠物生育一次这一对的生育能力就会降低2个..也就是说一对小宠物在第二次生育时就只能生4个了..小宠物成熟后每个单位时间都会尽力的生育(例: 从0出生的一对..2时间生6个..3时间生4个..4时间生2个...5时间生不出..6时间这一对已经挂了..)..生育出来的新小宠物会继续这个过程..
ZZY想知道从单位时间0开始..经过M个单位时间(时间为M时)将有多少只活着的小宠物(0时刻有2只小宠物)
因为ZZY隐隐地觉得什么地方怪怪的...所以请将这个数目mod 10000
Input
多组数据读到EOF
每组数据一行:
M ( 0<=M<=2000000000 )
最多500组数据
Output
每组输出一行为 Case 组号: 答案,即M时刻活着的小宠物个数%10000
Sample Input
012348
Sample Output
Case 1: 2Case 2: 2Case 3: 8Case 4: 12Case 5: 32Case 6: 528
还是差那么一点点,没做出来啊。别人的代码:
还是差那么一点点,没做出来啊。别人的代码:
#include<stdio.h>
const int mode=10000;
int main()
{
int a[6],i,j,n,k=1;;
while(scanf("%d",&n)!=EOF)
{
if(n<1)printf("Case %d: 2\n",k++);
else
{
a[0]=2;
a[1]=a[2]=a[3]=a[4]=a[5]=0;
for(j=1;j<=n;j++)
{
for(i=5;i>0;i--)
a[i]=a[i-1];
a[i]=(a[2]*3+a[3]*2+a[4])%mode;
}
printf("Case %d: %d\n",k++,(a[0]+a[1]+a[2]+a[3]+a[4]+a[5])%mode);
}
}
return 0;
}