ZZY的宠物
Time Limit: 1000MS
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隐隐地觉得什么地方怪怪的...所以请将这个数目mod10000
Input
多组数据读到EOF
每组数据一行:
M ( 0<=M<=2000000000 )
最多500组数据
Output
每组输出一行为 Case 组号: 答案,即M时刻活着的小宠物个数%10000
SampleInput
0
1
2
3
4
8
SampleOutput
Case 1: 2
Case 2: 2
Case 3: 8
Case 4: 12
Case 5: 32
Case 6: 528
Source
ZZY原创的说..
Case 1: 2
Case 2: 2
Case 3: 8
Case 4: 12
Case 5: 32
Case 6: 528
SourcZZY原创的说..
队长威武今天做了一道队长出的zzy的宠物 这道题 直接无语了 忘记了赋值 直接悲剧了 ~~~ 整了一晚上 果断被坑了
#include<stdio.h>
#include<string.h>
struct node{
int a[7][7];
int flag;
node(){
memset(a,0,sizeof(a));
a[1][2]=3;
a[1][3]=2;
a[1][4]=a[2][1]=a[3][2]=a[4][3]=a[5][4]=a[6][5]=1;
}
}ju,jubase; //矩阵的初始化
struct nod{
int ans[6];
nod(){
ans[0]=2;
}
} ;
int function(node p,node q,int n,int m ) //矩阵的运算
{
int t=p.a[n][1]*q.a[1][m] + p.a[n][2]*q.a[2][m] + p.a[n][3]*q.a[3][m] + p.a[n][4]*q.a[4][m] + p.a[n][5]*q.a[5][m] + p.a[n][6]*q.a[6][m];
return t%10000;
}
node matrix(node p,node q) //矩阵的运算
{
node t;
int i,j;
for( i=1; i<=6; i++ )
for( j=1; j<=6; j++)
{
t.a[i][j] = function( p, q, i, j);
}
return t;
}
node fun(int n) //矩阵的运算
{ int i,j;
if(n==1)return jubase;
ju=fun(n/2);
ju=matrix(ju,ju);
if(n%2==1) ju=matrix(ju,jubase); //这里忘记了给ju这个结构体变量赋值
return ju; //注意要有返回值
}
int func(node p,nod q,int n) //矩阵的运算
{
int t=p.a[n][1]*q.ans[0] + p.a[n][2]*q.ans[1] + p.a[n][3]*q.ans[2] + p.a[n][4]*q.ans[3] + p.a[n][5]*q.ans[4] + p.a[n][6]*q.ans[5];
return t%10000;
}
nod mutiply( node p, nod q)
{
nod t;
int i;
for(i=0;i<=5;i++)
t.ans[i]=func( p, q,i+1) ;
return t; //忘记了返回值了
}
int main()
{
int n;
int i,j;
while( scanf("%d",&n)!=EOF )
{
if(n==0){printf("2\n");continue;} //注意0的这种赋值
ju=fun(n);
nod base;
base=mutiply(ju,base);
int sum=0;
printf("%d\n",sum%10000);
}
}
探讨了由一对小宠物经过特定繁殖周期后的存活数量计算方法,通过矩阵运算实现时间推演,模运算确保结果在指定范围内。

被折叠的 条评论
为什么被折叠?



