大佬们说说这道题怎么理解呢?


在网上看到有人的解法如下,并且是ac的:
#include<stdio.h>
int main()
{
    int a,b,n,i,arr[49]={1,1};
    while(scanf("%d%d%d",&a,&b,&n)&&(a|b|n))
    {
        for(i=2;i<49;i++)
            arr[i]=(a*arr[i-1]+b*arr[i-2])%7;
        printf("%d\n",arr[(n-1)%49]);//数组下标从0开始,所以n先减1
    }
    return 0;
}
想知道 其中的 %49是如何理解的。f(n-1)的取值范围为[0,6],同样f(n-2)的取值范围也是[0,6],两个数的组合为(0,0),(0,1)(1,1)......(6,6)一共有7*7=49种不同的组合。所以49是可能的最大周期数,但也有一些的周期数是小于49,例如a=2,b=3时,周期大小为6,每个周期中的数为 1,1, 5, 6, 6, 2。像这种情况还可以用 % 49去做吗?求大佬解释一下
#笔试题目#
全部评论
打表找规律
点赞 回复 分享
发布于 2018-11-11 15:14

相关推荐

寿命齿轮:实习就一段还拉了,项目一看就不是手搓,学历也拉了,技术栈看着倒是挺好,就是不知道面试表现能咋样。 不过现在才大三,争取搞两端大厂实习,或者一个纯个人项目+一段大厂,感觉秋招还是未来可期。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务