HDU 1005 找规律

来源:互联网 发布:无人驾驶数据标注 编辑:程序博客网 时间:2024/05/16 09:02

6/1000

题解
看到题的第一眼是想些矩阵乘法+快速幂来着…但是发现模数好小
然后发现一共最多就49种情况…于是愉快的找一下圈就行了

感觉自己写的有一点复杂QAQ

不过还好

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int f[10][10];int main(){    //freopen("in.txt","r",stdin);    int a,b,n;    while(scanf("%d%d%d",&a,&b,&n),a||b||n){        memset(f,-1,sizeof(f));        int x=1,y=1,nx,ny,cnt=0,cir;        while(1){            ny=(a*y+b*x)%7;            nx=y;            if(f[nx][ny]!=-1)break;            f[nx][ny]=++cnt;            x=nx;y=ny;        }        cir=f[x][y]-f[nx][ny]+1;        x=y=1;        for(int i=3;i<=n;i++)        {            int tmp=(a*y+b*x)%7;            x=y;y=tmp;            if((x==nx)&&(y==ny))n=i+(n-i)%cir;        }        printf("%d\n",y);    }    return 0;}

以上。

原创粉丝点击