[解题报告]1005 - Number Sequence
题目大意
题目原文:http://acm.hdu.edu.cn/showproblem.php?pid=1005
背景:
问题描述:
编号规则定义如下:
f(1) = 1,f(2) = 1,f(n) = (A * f (n-1) + B * f (n-2)) mod 7。
给定的 A、 B 和 n,你要计算的 f(n) 值。
f(1) = 1,f(2) = 1,f(n) = (A * f (n-1) + B * f (n-2)) mod 7。
给定的 A、 B 和 n,你要计算的 f(n) 值。
输入:
输入包含多个测试用例。每个测试用例包含 3 整数 A、 B 和单独的一行上 n (1 < = A、 B < = 1000,1 < = n < = 100000000)。三个零信号的输入端,此测试用例并不是被处理。
输出:
为每个测试用例,在单独的一行打印 f(n) 的值。
Sample Input
1 1 3
1 2 10
0 0 0
Sample Output
2
5
算法:
计算出48个后你发现有规律的,然后就只要存储前48个就可以了。很简单的水题。
代码:
这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。
#include<stdio.h> int main (void) { int a,b,i,c[49]; int n; while((scanf("%d %d %d",&a,&b,&n))!=EOF) { if(a==0&&b==0&&n==0)break; c[0]=1; c[1]=1; c[2]=1; for(i=3;i<=48;i++) c[i]=(a*c[i-1]+b* c[i-2])%7; printf("%d\n",c[n%48]); } return 0; }