wojiaocbj

rotate

Mar 21st, 2022
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. #include <stdio.h>
  2. unsigned int a[500001] = { 0 };
  3. int main(){
  4.     int n, i = 0, d, d2, e, tmp;
  5.     unsigned int t;
  6.     char c[5] = { 0 };
  7.     while(scanf("%d", &n) != EOF){
  8.         for(i = 0; i < n; i++){
  9.             scanf("%d", &tmp);
  10.             a[i] = (unsigned int)tmp;
  11.         }
  12.         scanf("%s%u", c, &t);
  13.         if(c[0] == 'l'){
  14.             if(t % (32 * n) != 0){
  15.                 d2 = t % (32 * n);
  16.                 e = (d2 / 32) % n;
  17.                 d = d2 % 32;
  18.                 if(e != 0){
  19.                     for(i = 0; i < e; i++){
  20.                         unsigned int x = a[0];
  21.                         for(int j = 0; j < n - 1; j++){
  22.                             a[j] = a[j + 1];
  23.                         }
  24.                         a[n - 1] = x;
  25.                     }
  26.                     if(d){
  27.                         unsigned int f = a[0];
  28.                         for(i = 0; i < n - 1; i++){
  29.                             a[i] = (a[i] << d) | (a[i + 1] >> (32 - d));
  30.                         }
  31.                         a[n - 1] = (a[n - 1] << d) | (f >> (32 - d));
  32.                     }
  33.                    
  34.                 }
  35.                 else{
  36.                     if(d){
  37.                         unsigned int f = a[0];
  38.                         for(i = 0; i < n - 1; i++){
  39.                             a[i] = (a[i] << d) | (a[i + 1] >> (32 - d));
  40.                         }
  41.                         a[n - 1] = (a[n - 1] << d) | (f >> (32 - d));
  42.                     }                  
  43.                 }
  44.                 for(i = 0; i < n; i++){
  45.                     printf("%d ", (int)a[i]);
  46.                 }
  47.             }
  48.             else{
  49.                 for(i = 0; i < n; i++){
  50.                     printf("%d ", (int)a[i]);
  51.                 }
  52.             }
  53.         }
  54.         if(c[0] == 'r'){
  55.             if(t % (32 * n) != 0){
  56.                 d2 = t % (32 * n);
  57.                 e = (d2 / 32) % n;
  58.                 d = d2 % 32;
  59.                 if(e != 0){
  60.                     for(i = 0; i < e; i++){
  61.                         unsigned int x = a[n - 1];
  62.                         for(int j = n - 1; j > 0; j--){
  63.                             a[j] = a[j - 1];
  64.                         }
  65.                         a[0] = x;
  66.                     }
  67.                     if(d){
  68.                         unsigned int f = a[n - 1];
  69.                         for(i = n - 1; i > 0; i--){
  70.                             a[i] = (a[i] >> d) | (a[i - 1] << (32 - d));
  71.                         }
  72.                         a[0] = (a[0] >> d) | (f << (32 - d));
  73.                     }              
  74.                     for(i = 0; i < n; i++){
  75.                         printf("%d ", (int)a[i]);
  76.                     }
  77.                 }
  78.                 else{
  79.                     if(d){
  80.                         unsigned int f = a[n - 1];
  81.                         for(i = n - 1; i > 0; i--){
  82.                             a[i] = (a[i] >> d) | (a[i - 1] << (32 - d));
  83.                         }
  84.                         a[0] = (a[0] >> d) | (f << (32 - d));
  85.                     }
  86.                     for(i = 0; i < n; i++){
  87.                         printf("%d ", (int)a[i]);
  88.                     }
  89.                 }
  90.             }
  91.         }
  92.         printf("\n");
  93.     }
  94.  
  95.  
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment