本文主要是介绍HDU 1005 Number Sequence ---- SOLVED,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
暂不知道怎么办,递归层数过多
Runtime Error
(STACK_OVERFLOW)
-------2012-04-17
#include <iostream>
using namespace std;
int A, B, n;
int func( int x )
{if( x == 1 || x == 2)return 1;else// x > 2return ( A * func( x - 1 ) + B * func( x - 2 ) ) % 7;
}
int main()
{while( cin >> A >> B >> n ){if( A==0 && B==0 && n==0 )break;cout << func(n) << endl;}return 0;
}/*
Sample1 1 3
1 2 10
0 0 0*/
看了别人的解答,该题就是打表题。并且结果会出现循环
所以只需要打表,然后找是否发生循环
-------2012-12-21
#include<iostream>
#define MAX 2000
using namespace std;int main()
{int a, b, n, i, func[MAX];while (cin >> a >> b >> n && n != 0 && a != 0 && b != 0){func[1] = func[2] = 1;for (i = 3; i < MAX;i ++){func[i] = (a * func[i-1] + b * func[i-2]) % 7;if (func[i] == 1 && func[i-1] == 1) // 找到循环点break;}n = n % (i - 2);func[0] = func[i-2]; //整除时 n = 0 so 为f[0]赋f[i-2]cout << func[n] << endl;memset (func, 0, sizeof(func));}
}
这篇关于HDU 1005 Number Sequence ---- SOLVED的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!