//第一次错误尝试
/*
*/
/*
1 1 3
1 2 10
0 0 0
*/
/*
//第二次错误尝试
*/
//本题先是用递归,但发现输入最大那个数100000000时总是溢出导致程序崩溃。
//后来想想是不是递归栈到极限了,改用for循环做,结果还是没噶最后只能上网求助。
//发现原来是鸽笼原理(又名:抽屉原理),数学啊,长见识了……又学到新知识了。。。
//本题应用:鸽笼原理
//网上搜到的代码
/*
#include<iostream>
using namespace std;
unsigned f(unsigned a, unsigned b, unsigned n)
{
if(n == 1 || n == 2)
return 1;
return (a * f(a, b, n-1) + b * f(a, b, n-2)) % 7;
}
int main()
{
unsigned a, b, n;
while(cin >> a >> b >> n, a !=0 && b != 0 && n != 0)
cout << f(a, b, n) << endl;
return 0;
}
*/
/*
1 1 3
1 2 10
0 0 0
*/
/*
//第二次错误尝试
#include<iostream>
using namespace std;
unsigned long f(unsigned long a, unsigned long b, unsigned long n)
{
if(n == 1 || n == 2)
return 1;
return (a * f(a, b, n-1) + b * f(a, b, n-2)) % 7;
}
int main()
{
unsigned long a, b, n;
while(cin >> a >> b >> n, a !=0 && b != 0 && n != 0)
cout << f(a, b, n) << endl;
return 0;
}
*/
//本题先是用递归,但发现输入最大那个数100000000时总是溢出导致程序崩溃。
//后来想想是不是递归栈到极限了,改用for循环做,结果还是没噶最后只能上网求助。
//发现原来是鸽笼原理(又名:抽屉原理),数学啊,长见识了……又学到新知识了。。。
//本题应用:鸽笼原理
//网上搜到的代码
#include<iostream>
using namespace std;
int main()
{
const size_t array_size = 50;
int a, b, n, parr[array_size] = {0, 1, 1};
while(cin >> a >> b >> n, a !=0 && b != 0 && n != 0)
{
for(size_t ix = 3; ix != array_size; ++ix)
parr[ix] = (a * parr[ix - 1] + b * parr[ix - 2]) % 7;
cout << parr[n%49] << endl;
}
return 0;
}
同时欢迎提出不同意见,以帮助我改进,不胜感激!!!
——桑海整理