http://acm.hdu.edu.cn/showproblem.php?pid=2137
circumgyrate the string
Time Limit: 10000/1000 MS (Java/Others)
Total Submission(s): 2164
Problem Description
Input
Output
Sample Input
asdfass 7
Sample Output
a s d f a s s
Author
wangye
Source
Recommend
威士忌
题意:给一段字符串和数字N,N表示这段字符串逆时针旋转的次数,每次旋转45°,输出旋转后的字符串。
分析:旋转每8次一循环,并且当N的值取0和4;1和5;2和6;3和7时,输出格式一样,字符串的顺序相反。
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int n,i,flag,j,l;
char w[81];
while(scanf("%s%d",w,&n)!=EOF)
{
l=strlen(w);
if(n%8==0) puts(w);
if(n%8==4||n%8==-4)
{
for(i=0;i<l;i++)
printf("%c",w[l-1-i]);
printf("\n");
}
if(n%8==5||n%8==-3)
{
flag=l-1;
for(i=0;i<l;i++)
{
for(j=0;j<flag;j++)
printf(" ");
printf("%c\n",w[i]);
flag--;
}
}
if(n%8==1||n%8==-7)
{
flag=l-1;
for(i=0;i<l;i++)
{
for(j=0;j<flag;j++)
printf(" ");
printf("%c\n",w[l-1-i]);
flag--;
}
}
if(n%8==6||n%8==-2)
{
flag=l/2;
for(i=0;i<l;i++)
{
for(j=0;j<flag;j++)
printf(" ");
printf("%c\n",w[i]);
}
}
if(n%8==2||n%8==-6)
{
flag=l/2;
for(i=0;i<l;i++)
{
for(j=0;j<flag;j++)
printf(" ");
printf("%c\n",w[l-1-i]);
}
}
if(n%8==7||n%8==-1)
{
flag=0;
for(i=0;i<l;i++)
{
for(j=0;j<flag;j++)
printf(" ");
printf("%c\n",w[i]);
flag++;
}
}
if(n%8==3||n%8==-5)
{
flag=0;
for(i=0;i<l;i++)
{
for(j=0;j<flag;j++)
printf(" ");
printf("%c\n",w[l-1-i]);
flag++;
}
}
}
return 0;
}
#include<string.h>
#include<math.h>
int main()
{
}