杭电acm1005

开始用递归总是超时,后来发现每 7 一循环,不过要根据 f [3] 把0, 1, 2, 3, 4, 5, 6的次序改了,但这样我写不出来,后来百度说49一循环,解决了。

#include <iostream>
using namespace std;
int main()
{  
  
  int a,b;
  long int n;
  int i;
  int f[50];
   while(cin>>a>>b>>n && n!=0)
   {
     f[1]=1;
     f[2]=1;
     for(i =3;i<=48;i++)
       {
        f[i]=(a*f[i-1]+b*f[i-2])%7;
       }
        n =n % 49;
        f[0] = f[48];
       cout<<f[n] <<endl;
    
   }
  return 0;
}


你可能感兴趣的:(ACM,HDU)