杭电acm 1005 Number Sequence
来源:互联网 发布:淘宝建盏可靠吗 编辑:程序博客网 时间:2024/06/06 01:10
Number Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 116886 Accepted Submission(s): 28442
Problem Description
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).
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).
Input
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.
Output
For each test case, print the value of f(n) on a single line.
Sample Input
1 1 31 2 100 0 0
Sample Output
25
Author
CHEN, Shunbao
首先要知道mod是求余运算,一开始没考虑那么多 ,直接迭代,结果超时! 仔细观察 对于这样的题目,通过第二个程序的打表代码不难发现肯定有输出规律,那么只需找出循环节即可,请参考大牛代码,我也学习了。
//一开始迭代 超时,通过打表可以看出循环#include<iostream>using namespace std;int main(){ int A,B,n; int a,a1,a2; while(cin>>A>>B>>n,A+B+n) { a=0;a1=a2=1; for(int i=0;i<n-2;i++) { a=(A*a1+B*a2); a2=a1; a1=a; } cout<<a<<endl; } return 0;}AC代码:#include<iostream>using namespace std;int f[100000005];int main(){ int a,b,n,i,j; f[1]=1;f[2]=1; while(cin>>a>>b>>n,a+b+n) { int s=0;//记录周期 for(i=3;i<=n;i++) { f[i]=(a*f[i-1]+b*f[i-2])%7; for(j=2;j<i;j++) if(f[i-1]==f[j-1]&&f[i]==f[j])//此题可以这样做的原因就是 2个确定后就可以决定后面的 { s=i-j; //cout<<j<<" "<<s<<" >>"<<i<<endl; break; } if(s>0) break;//一开始s==0;如果找到循环节,即可跳出循环; } if(s>0){ f[n]=f[(n-j)%s+2];//对于每个出入的n,转换为一个循环节内的数并复制给所求; //cout<<"f["<<n<<"]:="<<"f["<<(n-j)%s+j<<"] "<<endl; } cout<<f[n]<<endl; } return 0;}
0 0
- 杭电ACM 1005 Number Sequence
- 杭电acm 1005 Number Sequence
- ACM杭电1005 Number Sequence
- 杭电ACM 1005:Number Sequence
- 杭电ACM(1005)Number Sequence
- 杭电ACM 1005 Number Sequence
- 杭电ACM 1005 Number Sequence
- 杭电acm第1005题Number Sequence
- 杭电ACM第1005题——Number Sequence
- 杭电ACM刷题(2):1005,Number Sequence
- 杭电ACM 1005(Number Sequence)c++
- 杭电ACM-HDU1005-Number Sequence
- 杭电1005 Number Sequence
- 杭电 1005 Number Sequence
- 杭电 1005 Number Sequence
- 杭电1005 Number Sequence
- 杭电1005Number Sequence
- 杭电1005-Number Sequence
- Android MTP 转载http://www.cnblogs.com/skywang12345/p/3474206.html
- Linux的bg和fg命令
- 往企业家蜕变的过程中该如何拥抱失败 3 - 创业未动,学习先行
- 行内元素与块级元素比较全面的区别和转换
- 软件工程概论(二)
- 杭电acm 1005 Number Sequence
- 11549 - Calculator Conundrum[暴力]
- IOS前奏之Object-C基础:类的构造函数和description(自描函数)
- sed命令
- 龟兔赛跑预测
- 黑马程序员——【C语言】输出整数在内存中的二进制形式
- MFC空控件 --- 使用下拉列表、微调按钮
- Android性能优化之实现双缓存的图片异步加载工具(LruCache+SoftReference) - 拿来即用
- wave