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 }

 

posted @ 2012-10-03 10:27  尔滨之夏  阅读(382)  评论(0编辑  收藏  举报