4 条题解
-
0
#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
- 上传者