738
备注:
|
1815
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 1: | 行号 1: |
## page was renamed from 程序设计练习20——zju2105——Number Sequence | |
行号 29: | 行号 30: |
------ {{{#!cplusplus ---written by proby--- #include <iostream> #include <vector> #include <algorithm> using namespace std; //336 is the LCM of all cases vector<int> temList; int Calc(int a, int b, int n){ if(temList[n] >= 0){ return temList[n]; } if(n==1 || n==2){ temList[n]=1; return temList[n]; } temList[n] = (a*Calc(a, b, n-1) + b*Calc(a, b, n-2))%7 ; return temList[n]; } int MyMod(double n){ while(n > 340){ n-=336; } return int(n); } void MyClear(int& n){ n=-1; } void MyPrint(int n){ cout<<n<<" "; } int main(){ int a, b, res; double n; cin>>a>>b>>n; while(a!=0){ res=MyMod(n); if(temList.capacity() < res+1){ //temList.reserve(res+1); temList.resize(res+1); } for_each(temList.begin(), temList.begin()+res+1, MyClear); //"+1" is very necessary cout<<Calc(a, b, res)<<endl; //for_each(temList.begin(), temList.begin()+res+1, MyPrint); cout<<endl; cin>>a>>b>>n; } return 1; } }}} |
Number Sequence
Time limit: 1 Seconds
Memory limit: 32768K
A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n).
1. Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
2. Output
For each test case, print the value of f(n) on a single line.
3. Sample Input
{{{1 1 3 1 2 10 0 0 0 }}}