首页 > 技术文章 > 杭电OJ1005 水过

zhuhongjongy 2015-11-13 17:32 原文

这题其实读题的时候表示不难,但是真正做起来的时候发现其实还挺难的。

在读题的时候就会考虑的大数组内存溢出的问题以及使用迭代来解决,但是这都不知很好的解决方案。

在看网上的解答,普遍都是找规律。

找到规律后这题就好解了。

这题我是看着别人的思路过得,实在惭愧。

我的参考文章:http://www.lofter.com/postentry?from=search&permalink=cafef_31acc6

这篇文章找到了1008的周期循环,在做的时候直接从发a * f[1]+b * f[2]做起,同时用取余找周期的方法,找到正确的数。

下面附上AC代码:

#include<stdio.h>

int main(){
	int i,sum,a,b,n;
	while(scanf("%d%d%d",&a,&b,&n)){
		if(a == 0 && b == 0 && n == 0){
			break;
		}
		int f[1009];
		f[1] = 1;
		f[2] = 1;
		for(i = 3;i <= 1008; i++){
			f[i] = (a * f[i - 1] + b * f[i - 2]) % 7;
		}
		printf("%d\n",f[n % 1008]);
	}
	
	return 0;
}

  

THISSKY出品,原文链接:http://www.cnblogs.com/zhuhongjongy/p/4962786.html 

推荐阅读