Give you a string, just circumgyrate. The number N means you just circumgyrate the string N times, and each time you circumgyrate the string for 45 degree anticlockwise.
思路解析:
Input
In each case there is string and a integer N. And the length of the string is always odd, so the center of the string will not be changed, and the string is always horizontal at the beginning. The length of the string will not exceed 80, so we can see the complete result on the screen.
Output
For each case, print the circumgrated string.
Sample Input
asdfass 7
Sample Output
a s d f a s s
代码:
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
char a[100];
int n;
int main()
{
while( scanf("%s",a) == 1 ){
int len = strlen(a);
scanf("%d",&n);
n %= 8;
if( n < 0 )
n += 8;
if( n == 0 )
printf("%s\n",a);
else if( n==4 ){
for( int i=len-1 ; i>=0 ; i-- )
printf("%c",a[i]);
printf("\n");
}
else if( n == 1 ){
for( int i=len-1; i>=0 ; i-- )
{
for( int j=i ; j>0 ; j-- )
printf(" ");
printf("%c\n",a[i]);
}
}
else if( n == 2 )
{
for( int i=len-1 ; i>=0 ; i-- )
{
for( int j=0 ; j<(len/2) ; j++ )
printf(" ");
printf("%c\n",a[i]);
}
}
else if( n == 3 )
{
for( int i=len-1 ; i>=0 ; i-- )
{
for( int j=len-1 ; j>i ; j-- )
printf(" ");
printf("%c\n",a[i]);
}
}
else if( n == 5 ){
for( int i=0 ; i<len ; i++ ){
for( int j=i+1 ; j<len ; j++ )
printf(" ");
printf("%c\n",a[i]);
}
}
else if( n == 6 )
{
for( int i=0 ; i<len ; i++ )
{
for( int j=0 ; j<len/2 ; j++ )
printf(" ");
printf("%c\n",a[i]);
}
}
else if( n == 7 )
{
for( int i=0 ; i<len ; i++ )
{
for( int j=0 ; j<i ; j++ )
printf(" ");
printf("%c\n",a[i]);
}
}
}
return 0;
}
思路解析:
题意:
输入一字符串“a”,数字“n”.
输出:把字符串“a”,以n(为正数时)次逆时针旋转每次45度。(n为负数时表示顺时针旋转)
360度,每45度为一次,共8次,故8为一整个一次大循环。模拟这8个即可。(n为负数时,n与 n+8相同)
见下图:
abcef 0
abcef
abcdef 1
f
e
d
c
b
abcdef 2
f
e
d
c
b
a
abcdef 3
f
e
d
c
b
a
abcdef 4
fedcba
abcdef 5
a
b
c
d
e
f
abcdef 6
a
b
c
d
e
f
abcdef 7
a
b
c
d
e
f
abcdef 8
abcdef
abcdef -1
a
b
c
d
e
f
abcdef -2
a
b
c
d
e
f
。。。