1676 - 搞破坏
时间限制 : 1 秒
内存限制 : 32 MB
某位大神闯进了ACM俱乐部的总部,打算搞一番破坏……他决定把桌面上的一份文件里面的每个单词都改一下。
他要把这个单词的前面k个字母移到单词的末尾去。
题目输入
输入有多组数据。
每组数据一行,包含一个单词(只有英文字母,长度<=2000),一个正整数k(小于单词长度)。
题目输出
对应每组数据,输出被破坏后的单词。
输入/输出样例
输入格式
clubACM 4 Butterfly 7
输出格式
ACMclub lyButterf
C语言解答
/* * ===================================================================================== * * Filename: 903.c * * Description: hahahhaha * * Version: 1.0 * Created: 2013/9/3 星期二 15:11:22 * Revision: none * Compiler: gcc * * Author: mdk-vim.cpp-c (mdk), mengdaikun@gmail.com * Company: cjluacm-vim-mdk * * ===================================================================================== */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define MAX 2000 int main() { // freopen("a.in","r",stdin); char str[MAX]; int k; int i; int len; while(~scanf("%s %d",str,&k)) { len = strlen(str); for(i = k ; i < len ; i++) printf("%c",str[i]); for(i = 0 ; i < k ; i++) printf("%c",str[i]); printf("\n"); } return 0; }
C++解答
#include <stdio.h> #include "string.h" /////////////////////////////////////////////////////////////////////// // Reverse the string between pStart and pEnd /////////////////////////////////////////////////////////////////////// void ReverseString(char* pStart, char* pEnd) { if(pStart != NULL && pEnd != NULL) { while(pStart <= pEnd) { char temp = *pStart; *pStart = *pEnd; *pEnd = temp; pStart ++; pEnd --; } } } /////////////////////////////////////////////////////////////////////// // Move the first n chars in a string to its end /////////////////////////////////////////////////////////////////////// char* LeftRotateString(char* pStr, unsigned int n) { if(pStr != NULL) { int nLength = static_cast<int>(strlen(pStr)); if(nLength > 0 && n > 0 && n < nLength) { char* pFirstStart = pStr; char* pFirstEnd = pStr + n - 1; char* pSecondStart = pStr + n; char* pSecondEnd = pStr + nLength - 1; // reverse the first part of the string ReverseString(pFirstStart, pFirstEnd); // reverse the second part of the strint ReverseString(pSecondStart, pSecondEnd); // reverse the whole string ReverseString(pFirstStart, pSecondEnd); } } return pStr; } int main() { char s[9999]; int n; while(scanf("%s%d",s,&n)!=EOF) printf("%s\n",LeftRotateString(s,n)); return 0; }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cinScanner= new Scanner(System.in); while(cinScanner.hasNext()) { String str = cinScanner.next(); int k = cinScanner.nextInt(); reverseString(str, k); } } public static void reverseString(String str,int begin) { for(int i=begin;i<str.length();i++) System.out.print(str.charAt(i)); for(int i=0;i<begin;i++) System.out.print(str.charAt(i)); System.out.println(); } }