hdu 1005(找循环节)
2024-08-28 18:04:32
Number Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 149022 Accepted Submission(s): 36261
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.
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
1 2 10
0 0 0
Sample Output
2
5
5
不知道为什么把T=i-2放到循环里面直接break会一直WA,re,,严重怀疑后台数据。。找循环节就行了..因为f[i-1] f[i-2]都属于[0,6]所以所有的排列不会超过49种,,在49次里面总会出现循环。。水题卡了我好久。。
#include <stdio.h>
int main()
{
int A,B,n,f[];
while(scanf("%d%d%d",&A,&B,&n)!=EOF,A||B||n)
{
f[]=,f[]=;
int i;
for(i=; i<; i++)
{
f[i] = (A*f[i-]+B*f[i-])%;
if(f[i]==&&f[i-]==)
{
break;
}
}
int T=i-;
f[]=f[T];
printf("%d\n",f[n%T]);
}
return ;
}
最新文章
- javascript事件操作
- ASP.NET MVC 了解FileResult的本质
- SVM经典论文
- win10删除或更改需要SYSTEM或Administrators权限的文件夹
- Oracle数据库,用户的创建及表的创建
- webbench详解
- ios中怎么样判断路径最后的后缀名称
- Java Map各遍历方式的性能比较
- CentOS下的svn强制用户提交时写日志
- 【转】JAVA 读写二进制文件
- codeforces 519C.. A and B and Team Training
- Jetbrains 系列神器
- Android闪光灯操作
- 说说缓存,说说Redis
- mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
- Python自动化编程-树莓派GPIO编程(二)
- 解决html5中video标签无法播放mp4问题的办法
- Linux上case用法
- Android 8 AudioPolicy 分析
- JavaScript资源收集分享,持续更新中。。。