hrbust 木马(字符串的操作)
题目可以通过循环来简化,求周期。h=k%n,h就是将后面的h个字符移动到前面来,同时将前面(n-h)个字符平移到后面。我已经碰到很多通过周期思想来解题的题。可见这个点还是很重要的。而且还特别简单。但更重要的是学以致用,在做题的时候会用才重要。
Input |
一个木马排列顺序,由一串字符串表示,长度不大于100000;第一行是一行字符串,
第二行是反向旋转K次0 <= K <= 1000000000
|
Output |
输出反向旋转K次之后的排列顺序 |
Sample Input |
abcd1234
1
abcd1234
2
|
Sample Output |
4abcd123
34abcd12
1 #include<stdio.h> 2 #include<string.h> 3 #define MAX 1000010 4 char s[MAX],stock[MAX]; 5 int main() 6 { 7 int n,k; 8 int i,h; 9 while(scanf("%s",s)!=EOF) 10 { 11 scanf("%d",&k); 12 n=strlen(s); 13 h=k%n;//通过周期求出要将后面几个平移到前面。 14 for(i=0;i<n;i++) 15 stock[i]=s[i];//将s[]存在stock[]中。 16 for(i=0;i<n-h;i++) 17 s[i+h]=stock[i];//将前n-h个平移 18 for(i=0;i<h;i++) 19 s[i]=stock[n-h+i];//将后h个平移。 20 printf("%s\n",s); 21 } 22 return 0; 23 }
|