感觉杭电oj上面的题目好坑。
第一感觉是Fibonacci数列,结果显示内存超限了,改用循环做,结果还是时间超限,后来Google了一下,才发现原来有一个亿的大坑,我的电脑上数组最大长度只有六位数的样子,看到了网友们发的规律,什么解释都有,怎么都看不懂,稍微总结一下这个题目,记住就可以了吧(智商有限,只能这么做了)。不知道怎么写,反正就是最多7*7种可能,再用循环做,把大数用49取余,以后这样的题目,要找规律。
勿喷,我只是想记录自己的学习过程,留下一些痕迹,仅次而已。
AC代码
#include<stdio.h>
int main(void)
{
int a, b, n;
int num[1000];
int i;
scanf("%d%d%d", &a, &b, &n);
while (a != 0 && b != 0 && n != 0)
{
num[1] = 1;
num[2] = 1;
n = n % 49;
if(n>2)
for (i = 3; i != n+1; i++)
num[i] = (a*num[i - 1] + b * num[i - 2]) % 7;
printf("%d\n", num[n]);
scanf("%d%d%d", &a, &b, &n);
}
return 0;
}