NYOJ 427 递推题
来源:互联网 发布:网络活动策划方案 编辑:程序博客网 时间:2024/06/03 05:37
这道题是昨天月赛的题目,月赛时纠结了1个多小时,今天又纠结了一个多小时,,,悲剧。昨天主要犯的错误时不知道循环可以不从0开始,就这样一直纠结到比赛结束。今天主要纠结在把++j写成了++i,,卧槽,这种错误真TMD的难发现。。。改过后就ac了。题目:
Number Sequence
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
- A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).- 输入
- The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
- 输出
- For each test case, print the value of f(n) on a single line.
- 样例输入
1 1 31 2 100 0 0
- 样例输出
25
#include <iostream>#include <string.h>#include <cstdio>using namespace std;int f[55],p[7][7];int main(){ f[1]=1;f[2]=1; int a,b,n; while(scanf("%d%d%d",&a,&b,&n),a,b,n){ memset(p,0,sizeof(p));p[1][1]=1;f[1]=1;f[2]=1;int i;for(i=3;i<=51;++i){ f[i]=(a*f[i-1]+b*f[i-2])%7; if(p[f[i-1]][f[i]]==1) break; p[f[i-1]][f[i]]=1;}int j;for(j=1;j<=i-2;++j){ if(f[j]==f[i-1]&&f[j+1]==f[i]) break;}if(n<j)printf("%d\n",f[n]);else{ int k; k=i-1-j; f[0]=f[i-2]; n-=(j-1); int xx=n%k; if(xx){printf("%d\n",f[j-1+(n%k)]);} else{printf("%d\n",f[0]);}} } return 0;}
- NYOJ 427 递推题
- NYOJ 427 Number Sequence
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- nyoj
- NYOJ
- NYOJ
- Jquery AJAX
- 约瑟夫环
- 俄罗斯方块所感
- Oracle Recyclebin
- 取得用户IP 代码直接可用
- NYOJ 427 递推题
- nhibernate应用sqlite错误Could not create the driver from 。。。修复
- Eclipsdebug的简单用法
- HTML5 Canvas编写五彩连珠(5):寻路
- 在文本框向数据库提交时提交内容有form表单时
- linux权限总结
- 俄罗斯方块html小游戏
- 便利Repeater里面的控件
- Rexsee API介绍:Android定时任务Alarm,附基本的闹钟功能示例