Advertisement
Infernale

Cycle

Oct 30th, 2018
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.79 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.     bool flag[100001];
  5.     int cycle[100001];
  6.     long long n,a,b,index,count;
  7.     int tc;
  8.     scanf("%d",&tc);
  9.     for(int i=1;i<=tc;i++){
  10.         count = 0, index = 0;
  11.         scanf("%lld %lld %lld",&n,&a,&b);
  12.         while(1){
  13.             if(flag[a]){
  14.                 for(int j=0;j<count;j++){
  15.                     if(cycle[j]==a){
  16.                         printf("Case #%d: %lld\n",i,count-j);
  17.                         break;
  18.                     }
  19.                 }
  20.                 break;
  21.             }
  22.             flag[a] = true;
  23.             cycle[index++] = a;
  24.             a = (a*b)%n;
  25.             count++;
  26.         }
  27.         for(int j=0;j<=count;j++){
  28.             flag[cycle[j]] = false;
  29.             cycle[j] = 0;
  30.         }
  31.     }
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement