简单数学规律题,多打印几组数据,发现输出都是有规律的,循环的字段都是6的倍数,且最高为48,所以我们统一设置重复长度为48就好。


题目:http://acm.split.hdu.edu.cn/showproblem.php?pid=1005


代码:

Memory: 1796 KB
Time: 0 MS
Language: C++
Result: Accepted


#include <iostream>
using namespace std;
const int maxn=50;
int a, b, n;
int ans[maxn];
int main()
{
    while(cin>>a>>b>>n && a+b+n)
    {
        if(n<3)cout<<"1"<<endl;
        else
        {
            int f1=1, f2=1,f3;
            for(int i=1; i<=48; i++)
            {
                f3=(a*f2+b*f1)%7;
                ans[i]=f3;
                f1=f2;
                f2=f3;
            }
            cout<<ans[(n-2)%48]<<endl;
        }
    }
    return 0;
}