Thursday, September 1, 2016

UVa - 306 - Cipher

Problem link:
306 - Cipher

Solution:
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const int S = 203;
  5. const int MOD = 1e9+7;
  6. const double pi = 2 * acos (0.0);
  7. int _I(){int x; scanf("%d"&x); return x;}
  8. LL _LL(){LL x; scanf("%lld"&x); return x;}
  9. int dirX[]={10-101-11-1};
  10. int dirY[]={010-11-1-11};
  11. int rX[] = {1122-1-1-2-2};
  12. int rY[] = {2-21-12-21-1};
  13.  
  14. template <class T> T Distance(T x1, T y1, T x2, T y2){return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));};
  15.  
  16. int sset(int N, int pos){return N=N|(1<<pos);}
  17. bool check(int N, int pos){return (bool)(N&(1<<pos));}
  18. int reset(int N, int pos){return N=N&~(1<<pos);}
  19. ///...............Code Starts From Here...............///
  20.  
  21. char ans[S];
  22. char input[S];
  23. int number[S];
  24.  
  25. int main(){
  26.     int n;
  27.     while(scanf("%d"&n) == 1 && n){
  28.         for(int i = 0; i < n; i++)number[i] = _I()-1;
  29.         int k;
  30.         while(scanf("%d"&k) == 1 && k){
  31.             getchar();
  32.             gets(input);
  33.             memset(ans, ' 'sizeof(ans));
  34.             int ind, cn;
  35.             for(int i = 0; input[i]; i++){
  36.                 ind = i, cn = 0;
  37.                 int f = 0;
  38.                 while(cn < k){
  39.                     if(ind == i && f){
  40.                         f = 2;
  41.                         break;
  42.                     }
  43.                     ind = number[ind];
  44.                     cn++, f = 1;
  45.                 }
  46.                 int p = k%cn;
  47.                 if(== 2){
  48.                     ind = i, cn = 0;
  49.                     while(cn < p){
  50.                         ind = number[ind];
  51.                         cn++;
  52.                     }
  53.                 }
  54.                 ans[ind] = input[i];
  55.             }
  56.             for(int i = 0; i < n; i++)printf("%c", ans[i]);
  57.             puts("");
  58.         }
  59.         puts("");
  60.     }
  61.     return 0;
  62. }

1 comment:

  1. ラッキーニッキー ラッキーニッキー 카지노 카지노 dafabet dafabet bet365 bet365 bk8 bk8 カジノ シークレット カジノ シークレット 카지노 카지노 171

    ReplyDelete