版本1和8间的区别 (跳过第7版)
于2006-03-11 17:02:19修订的的版本1
大小: 738
编辑: czk
备注:
于2006-04-23 22:44:15修订的的版本8
大小: 1817
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
## page was renamed from 程序设计练习20——zju2105——Number Sequence
行号 2: 行号 3:
http://acm.zju.edu.cn/show_problem.php?pid=2105
行号 29: 行号 32:
------
{{{#!cplusplus
/*written by proby*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//336 is the LCM of all cases
vector<int> temList;
行号 30: 行号 42:
http://acm.zju.edu.cn/show_problem.php?pid=2105 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

http://acm.zju.edu.cn/show_problem.php?pid=2105

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 }}}

4. Sample Output

zju2105 (2008-02-23 15:35:51由localhost编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.