博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1126 求递推序列的第N项(51nod)
阅读量:4580 次
发布时间:2019-06-09

本文共 966 字,大约阅读时间需要 3 分钟。

原题链接http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126

这题我们应该先求出他的周期来。。。。。

for(i=3;i<300;i++)        {            f[i]=((A*f[i-1]+B*f[i-2])%7+7)%7;             if(f[i-1]==1&&f[i]==1)            break;         }当f[i-1]==1&&f[i]==1时相当于又回到了开始,所以i-2就是他的周期

这里要注意当n%(i-2)==0时。。。f[0]=f[i-2],即n==i-2;

#include
#include
#include
#include
using namespace std;const int maxn=1000;int f[maxn];int main(){ int A,B,n; while(scanf("%d %d %d",&A,&B,&n)!=EOF) { memset(f,0,sizeof(f)); if(n==1||n==2) { printf("1\n"); continue; } f[1]=1;f[2]=1; int i; for(i=3;i<300;i++) { f[i]=((A*f[i-1]+B*f[i-2])%7+7)%7; if(f[i-1]==1&&f[i]==1) break; } f[0]=f[i-2]; printf("%d\n",f[n%(i-2)]); } return 0;}

 

转载于:https://www.cnblogs.com/NaCl/p/4743610.html

你可能感兴趣的文章