博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[解题报告]HDU 1005 Number Sequence
阅读量:6864 次
发布时间:2019-06-26

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

Number Sequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 73223    Accepted Submission(s): 17033

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
 

 

Recommend
JGShining
 

 一般来说第一眼看完题肯定想到用循环嵌套对吧。

呵呵,这样肯定超时

还好这个结果是有规律的,当然,意识到结果是有规律的这点很难得

比如说A=B=1;

那么f(n)依次为

1 1 2 3 5 1 6 0 6 6 5 4 2 6 1 0,1 1......

所以说只要用数组保存一个循环然后根据n算出对应的f(n)即可

#include
int main() { long n; int A,B,f[200]; while(scanf("%d %d %ld",&A,&B,&n)!=EOF&&A&&B&&n) { int j; for(j=0;j<200;j++) { f[j]=0; } if(n==1||n==2) printf("1\n"); else { long i; f[1]=1; f[2]=1; for(i=3;i<200;i++) { f[i]=(A*f[i-1]+B*f[i-2])%7; if(f[i]==1&&f[i-1]==1) break; } i=i-2; f[0]=f[i]; printf("%d\n",f[n%i]); } } return 0;}

 

转载于:https://www.cnblogs.com/TheLaughingMan/archive/2013/03/13/2958231.html

你可能感兴趣的文章
基于koajs的web项目构建-心得篇
查看>>
通过minify将项目中js和css文件的打包
查看>>
提取Windows用户密钥文件cachedump
查看>>
自定义grains_module pillar
查看>>
log file sycn 概述
查看>>
Javascript对于不同浏览器的兼容性
查看>>
开源在线阅读技术资源
查看>>
慎用jQuery中的submit()方法
查看>>
淘宝样式初始化代码
查看>>
Gson解析json数据 亲自测试可用
查看>>
我与监控宝之间的点点滴滴
查看>>
delphi 数据库显示的TDBGrid配置
查看>>
对51CTO的看法
查看>>
userenv和sys_context函数
查看>>
是否会回到起点.回忆只能是回忆
查看>>
原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现
查看>>
基于Mysql主从同步的读写分离
查看>>
容灾备份技术的分类概述
查看>>
java初学者必看——J2SE小结
查看>>
iOS网络开发(8)文件下载的实现
查看>>