HDU1005 Number Sequence

来源:互联网 发布:二值化算法程序 编辑:程序博客网 时间:2024/06/05 07:53

 ( 1 <= n <= 100,000,000)一开始开全局数组,MLT;后来用栈pop一次push一次,可循环还得O(n),TLE;最后的最后,只好找规律。

#include <iostream>#include<cstring>using namespace std;int main(){    int a,b,n,flag[7][7];    while(cin>>a>>b>>n){        if(!a&&!b&&!n) break;        int x=1,y=1,m=0,len,d;        memset(flag,-1,sizeof(flag));        while(flag[x][y]==-1){            flag[x][y]=m;            int t=x;            x=y;y=(a*y+b*t)%7;            ++m;//组数                    }        d=flag[x][y];//循环的初始位置        len=m-d;//循环的长度        if(n>=d){            m=(n-d-1)%len+d;        }        else m=n-1;        for(int i=0;i<7;i++){            for(int j=0;j<7;j++){                if((flag[i][j])==m){                    cout<<i<<endl; break;                }            }        }    }    return 0;}


0 0
原创粉丝点击