博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1005 Number Sequence 找规律
阅读量:5018 次
发布时间:2019-06-12

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

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).
 

 

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 3 1 2 10 0 0 0
 

 

Sample Output
2 5
 

 

Author
CHEN, Shunbao
 

 

Source
 
 
1 /* 2     一开始没看到n<=10000000 3     结果疯狂TLE 4      5     最后看了discuss 才知道要找周期  6 */ 7 #include
8 #include
9 #define MAXN 10000001010 11 using namespace std;12 13 int a,b,n;14 15 int f[1001];16 17 int main() {18 while(~scanf("%d %d %d",&a,&b,&n)&&a&&b&&n) {19 int pos;20 f[0]=0;f[1]=1;f[2]=1;21 for(int i=3;i<=100;i++) {22 f[i]=(f[i-1]*a+f[i-2]*b)%7;23 if(f[i]==f[2]&&f[i-1]==f[1]) { //找到周期 24 pos=i;25 break;26 }27 }28 // printf("%d\n",pos-2);29 n=n%(pos-2); //周期为pos-2 30 if(n!=0) printf("%d\n",f[n]);31 else printf("%d\n",f[pos-2]);32 }33 return 0;34 }
代码

 

 

Recommend
JGShining   |   We have carefully selected several similar problems for you:            
 

转载于:https://www.cnblogs.com/whistle13326/p/7155397.html

你可能感兴趣的文章
PAT甲级1002 链表实现方法
查看>>
查看Linux信息
查看>>
Python中sys模块sys.argv取值并判断
查看>>
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)
查看>>
并查集
查看>>
ubuntu 11.04下android开发环境的搭建!
查看>>
Bzoj 3343: 教主的魔法
查看>>
括号序列(栈)
查看>>
一件趣事
查看>>
动态主机配置协议DHCP
查看>>
读《构建之法》第 6 、7 章有感
查看>>
数组 (针对素组)
查看>>
Unity、c#中的拓展方法讲解
查看>>
linux的DNS相关介绍(转载)
查看>>
java音频
查看>>
void void*
查看>>
关于<span></span><div style="float:left"></div>
查看>>
简单JSONP跨域请求
查看>>
笔试题算法系列(九)百度2017不等式数列
查看>>
C#访问gsoap的服务--可用
查看>>