我 只能 说好
今天星期六,我把自己写的贴上来.
#include<stdio.h>
#define N 100
long count[N];
long is_in(long a[],long n)
{
long j;
for(j=n-1;j>=2;j--)
if(a[j]==a[n]&&a[j-1]==a[n-1])
return(n-j);
return(0);
}
int main()
{
#ifdef ONLINE_JUDGE
freopen ("Number Sequence.txt","r",stdin);
#endif
long n;
long a,b,i,t,d;
while(EOF!=(scanf("%ld%ld%ld",&a,&b,&n))&&!(a==0&&b==0&&n==0))
{
i=3;
count[1]=1;
count[2]=1;
while(1)
{
count[i]=(a*count[i-1]+b*count[i-2])%7;
t=is_in(count,i);
if(t!=0)
break;
i++;
}
i=i-t-1;
if(i>n)
printf("%ld\n",count[n]);
else
{
d=(n-i)%t;
if(d==0)
d=d+t;
d=d+i;
printf("%ld\n",count[d]);
}
}
return(0);
}
其实题目本身就是一个斐波那契数列的变形,今天刚上来,看见论坛里有不少好东东,值得学习,我写了一个程序,不过我不知道怎么测试时间性能,想向nuciewth请教下。
[此贴子已经被作者于2007-7-20 20:17:12编辑过]