(杭电1005)为什么第二个结果错了,是5不是1:a %= 7,b %= 7;这一句是什么作用

#include
int main()
{
int f[53], i, a, b, n;
while(scanf("%d%d%d", &a, &b, &n))
{
if (a ==0&&b ==0&&n == 0)
break;
if ((n == 1 )|| (n == 2))

    {
        printf("1\n");
        continue;
    }
    f[1] = 1,f[2] = 1;
    a %= 7,b %= 7;
    for (i = 3; i <= 52; i++)
    {
        f[i] = (a*f[i - 1] + b*f[n - 2]) % 7;
        if ((f[i] == 1) && (f[i - 1] == 1))break;
    }
    i = i - 2;
    n %= i;
    f[0] = f[i];
    printf("%d\n", f[n]);
}

}图片说明


 f[i] = (a*f[i - 1] + b*f[n - 2]) % 7;//n错了吧?是i?