题意:一个长度为52的数组每次从中去[l,r]放到最前面,操作k次问你数组是什么样的。
思路:由于k很大当时就想肯定要摸一个数,然后用样例打了个表发现只要模r就行了。是一道水题
代码如下:
1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-05-11 16:32 5 * Filename : A.cpp 6 * Description : 7 * ************************************************/ 8 9 #include <iostream> 10 #include <cstdio> 11 #include <cstring> 12 #include <cstdlib> 13 #include <cmath> 14 #include <algorithm> 15 #include <queue> 16 #include <stack> 17 #include <vector> 18 #include <set> 19 #include <map> 20 #define MP(a, b) make_pair(a, b) 21 #define PB(a) push_back(a) 22 23 using namespace std; 24 typedef long long ll; 25 typedef pair<int, int> pii; 26 typedef pair<unsigned int,unsigned int> puu; 27 typedef pair<int, double> pid; 28 typedef pair<ll, int> pli; 29 typedef pair<int, ll> pil; 30 31 const int INF = 0x3f3f3f3f; 32 const double eps = 1E-6; 33 const int LEN = 100; 34 vector<int> cd, tcd; 35 36 int main() 37 { 38 // freopen("in.txt", "r", stdin); 39 40 int t, n, l, r, tmp, kase = 1; 41 cin >> t; 42 while(t--){ 43 cd.clear(); 44 tcd.clear(); 45 for(int i=0; i<52; i++){ 46 cin >> tmp; 47 cd.PB(tmp); 48 } 49 cin >> n >> l >> r; 50 r--, l--; 51 n %= r+1; 52 for(int i=0; i<n; i++){ 53 stack<int> q; 54 for(int j=l; j<=r; j++) q.push(cd[j]); 55 for(int j=l; j<=r; j++) cd.erase(cd.begin()+l); 56 while(!q.empty()){ 57 cd.insert(cd.begin(), q.top()); 58 q.pop(); 59 } 60 } 61 printf("Case #%d: ", kase ++); 62 for(int i=0; i<52; i++){ 63 printf("%d", cd[i]); 64 if(i != 51) printf(" "); 65 else printf(" "); 66 } 67 } 68 return 0; 69 }