数字排序:规律周期题,50%错误,我不知道我问题出在哪,求大佬解答

数字顺序
时间限制: 1 Sec 内存限制: 128 MB
提交: 95 解决: 10
[提交] [状态] [讨论版] [命题人:admin]
题目描述
一个数字序列定义如下:f(1)= 1,f(2)= 1,f(n)=(A * f(n-1)+ B * f(n-2))mod 7.给定A,B和n,您将要计算f(n)的值。

输入
输入包含多个测试用例。每个测试用例在一行上包含3个整数A,B和n(1 <= A,B <= 1000、1 <= n <= 100,000,000)。三个零表示输入结束,该测试用例将不被处理。

输出
对于每个测试用例,输出一行,为f(n)的值。

样例输入
1 1 3
1 2 10
0 0 0

样例输出
2
5

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,ans[100],i;
    long long n,T;
    while(cin>>a>>b>>n)
    {
        a%=7;b%=7;
        if(a==0&&b==0&&n==0)
        break;
        memset(ans,0,sizeof(ans));
        ans[0]=1;ans[1]=1;
        //cout<<1<<endl<<1<<endl;
        for(int i=2;i<=60;i++)
        {
            ans[i]=(a*ans[i-1]+b*ans[i-2])%7;   
            //cout<<ans[i]<<endl;
        }
        for(i=2;i<60;i++)
        {
            if(ans[i]==1&&ans[i+1]==1)
            {
                T=i;
                break;
            }
        }
        cout<<ans[(n-1)%T]<<endl;

    }
    return 0;
}

ans[100]
i<=60
这里100 60哪里来的

这里不需要保存中间项到数组,只要保存f(n-1) f(n-2)两个变量即可
1 <= n <= 100,000,000