hdu 1005 Number Sequence(智寻循环节)
来源:互联网 发布:alien skin x2 mac 编辑:程序博客网 时间:2024/06/04 19:46
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
对于这条公式f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7
A和B是确定的,而 f(n - 1)和 f(n - 2)均为0-6总共7个数,所以 (A * f(n - 1) + B * f(n - 2))的值最多有49种可能,而一对相邻数字的组合最多为49^49种,所以在这个范围内爆搜决定可以找出循环节
代码:
#include <cstring>#include <cstdio>#include <cstdlib>using namespace std;int rec[2500];int main(){ int a, b, n;rec[1] = rec[2] = 1; scanf( "%d %d %d", &a, &b, &n ); while(!(a==0&&b==0&&n==0)) { int beg, end, flag = 0; for( int i = 3; i <= n && !flag; ++i ) { rec[i] = ( a * rec[i-1] + b * rec[i-2] ) % 7; for( int j = 2; j <= i - 1; ++j ) { if( rec[i] == rec[j] && rec[i-1] == rec[j-1] ) { beg = j, end = i; flag = 1; break; } } } if( flag ) { printf( "%d\n", rec[beg+(n-end)%(end-beg)] ); } else printf( "%d\n", rec[n] ); scanf( "%d %d %d", &a, &b, &n ); } return 0;}
0 0
- hdu 1005 Number Sequence(智寻循环节)
- hdu 1005 Number Sequence(循环节)
- HDU 1005 Number Sequence 找循环节
- HDU 1005 Number Sequence 打表找循环节
- HDU 1005 Number Sequence (循环节)
- HDU 1005 Number Sequence (找循环节)
- HDU 1005 Number Sequence【循环节】
- HDU 1005 Number Sequence(循环节) *
- HDU 1005Number Sequence(循环节)
- NYOJ 427 & HDU 1005 Number Sequence(找循环节)
- NYOJ 427 & HDU 1005 Number Sequence(找循环节)
- HDU 1005 Number Sequence【循环节(取模)】
- HDU 1005 Number Sequence (寻找循环节)
- HDU 1005 Number Sequence 【找循环周期(瞎搞)】
- HDU 1005 Number Sequence 找循环位置
- HDU-1005 Number Sequence 循环结
- hdu1005 Number Sequence(找循环节)
- HDU 1005 Number Sequence(循环周期是关键)
- 插入排序_1.直接插入排序
- 程序员生存定律-打造属于自己的稀缺性
- 东软学习,oracle函数与触发器
- Java Thread(线程)案例详解sleep和wait的区别
- EGORefreshTableHeaderView--ARC下面的使用 UItableView下来刷新的使用
- hdu 1005 Number Sequence(智寻循环节)
- UVA 662 Fast Food 区间DP
- 【金阳光测试】--深入Monkey工具和使用--Android系列(3)2014年八月八号
- qt html标签
- fatal error: android/native_window.h: No such file or directory
- 数据库分表与分区
- mysql_connect() [function.mysql-connect]: [2002] 由于目标计算机积极拒绝,无法连接。解决方案
- Windos 下安装Ubuntu系统
- 很炫的css样式