fork(1) download
  1. #include <bits/stdc++.h>
  2. #define d(x) cout<<'\n'<<#x<<' '<<x;
  3. using namespace std;
  4. int m,h1,h2,x1,x2,a1,a2,y11,y2,t;
  5. bool b1[1000000],b2[1000000];
  6. int i1[1000000],i2[1000000];
  7. int main()
  8. {
  9. fill(i2,i2+1000000,-1);
  10. fill(i1,i1+1000000,-1);
  11. t=1;
  12. cin >> m >> h1 >> a1 >> x1 >> y11 >> h2 >> a2 >> x2 >> y2 ;
  13. i1[h1]=0;
  14. i2[h2]=0;
  15. for(int i=0;i<m;i++)
  16. {
  17. h1=(x1*h1+y11)%m;
  18. if(b1[h1])
  19. break;
  20. i1[h1]=i+1;
  21. }
  22. for(int i=0;i<m;i++)
  23. {
  24. h2=(x2*h2+y2)%m;
  25. if(b2[h2])
  26. break;
  27. i2[h2]=i+1;
  28. }
  29. if(i1[a1]==-1 || i1[a2]==-1){cout<<-1;return 0;}
  30. int xx=m*i1[a1];
  31. int yy=m*i2[a2];
  32. if(i1[a1]!=i2[a2])
  33. cout<<((xx*yy)/__gcd(xx,yy));
  34. else cout<<i1[a1];
  35. return 0;
  36. }
Success #stdin #stdout 0s 12912KB
stdin
5
4 2
1 1
0 1
2 3
stdout
3