杭电oj1005

#include <iostream>
using namespace std;
int f(int A,int B,int n)
{
    //f(A,B,n) = ((A * f(A,B,(n - 1)) + B * f(A,B,(n - 2))) % 7);
    if(n>2)//(n!=1||n!=2)
    {
        return ((A * f(A,B,(n - 1)) + B * f(A,B,(n - 2))) % 7);
    }
    //f(A,B,1) = 1, f(A,B,2) = 1;
    if(n==1||n==2)
    {
        return 1;
    }
    //return f(A,B,n);
}
int main()
{
    //
    int a,b,c;
    while(cin>>a>>b>>c)
    {
        if(a+b+c==0)//(a==b==c==0)
        {
             break;
        }
        else
        {
            c=c%48;//加上这一句就对了!!!!!!!
            cout<<f(a,b,c)<<endl;
        }
    }
}

第一次提交,用递归做,出现了Memory limit exceeded,大概也是这个题目的设计之处,毕竟题设都很简单,百度之后才知道,这题需要找规律。。

50个为一个循环

猜你喜欢

转载自blog.csdn.net/qq_42770849/article/details/81214730