HDU 1005 Number Sequence

来源:互联网 发布:美工简历 编辑:程序博客网 时间:2024/06/02 01:22

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

n的数据范围太大,不能用常规的递归做

代码:

#include<iostream>#include<cstdio>using namespace std;int main(){    int c[10000];    int a,b,n,i;    while(scanf("%d %d %d",&a,&b,&n) && (a && b && n))    {        c[1]=1;        c[2]=1;        for(i=3;i<10000;i++)        {            c[i]=(a*c[i-1]+b*c[i-2])%7;            if(c[i]==1 && c[i-1]==1)//连续两个都为1时,就是找到周期了                break;        }        n=n%(i-2);//周期为i-2;        c[0] = c[i-2]; //注意n正好为周期的倍数时,在进行完n=n%(i-2);运算后变成0;        printf("%d\n",c[n]);    }    return 0;}


0 0