4 条题解

  • 0
    @ 2023-2-11 16:19:54
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int MAXN=2200000,Mod=2181271;
    int Hash[MAXN];
    struct P{
        ll val;
        int next;
    }p[MAXN];
    bool Count(int pos,ll x){
        for(int i=Hash[pos]; i ;i = p[i].next)
            if(p[i].val == x)
                return 1;
        return 0;
    }
    int A,B,C;
    int main(){
        ll a = 1;
        Hash[1] = p[1].val = 1;
        scanf("%d%d%d",&A,&B,&C);
        for(int i=1;i<=2000000;i++){
            a=(a*A+a%B)%C;
            int pos=a%Mod;
            if(Count(pos,a)){
                printf("%d\n",i);
                return 0;
            }
            p[i+1]={a,Hash[pos]};
            Hash[pos]=i+1;
        }
        printf("-1\n");
        return 0;
    }
    

    信息

    ID
    7
    时间
    1000ms
    内存
    16MiB
    难度
    4
    标签
    递交数
    394
    已通过
    191
    上传者