今早9点多才起床。吃完早餐跑到一课居然快10点多了。虽然冷冷的,但是放长假在一课写代码的日子倒是非常舒适嘿嘿O(∩_∩)O~
看的第一道题目理解了很久才明白什么意思。。。英语差的孩子伤不起啊。。。
/*
zoj_1178 模拟
输出格式稍微注意。
题意:一张纸有四面,两正面两背面。打印好后将所有纸张按顺序排好,对半折叠。刚好是
1,2,3...的正确顺序。求每一张纸张四面各自对应第几页。
方法:直接将1,2...n页数各自填入对应的位置。填入时正向依次填front2,back1.填完后逆
向填入back2,front1.直到达到n。
*/
#include <iostream>
#include <cstdio>
using namespace std;
struct sheet
{
int front1,front2;
int back1,back2;
}s[105];
void inint()
{
int i;
for( i=0;i<105;i++ )
{
s[i].front1=0;
s[i].front2=0;
s[i].back1=0;
s[i].back2=0;
}
}
void output(int n,int maxi)
{
int i;
printf( "Printing order for %d pages:\n",n );
for( i=1;i<=maxi;i++ )
{
if( !( s[i].front1==0 && s[i].front2==0 ) )
{
printf("Sheet %d, front: ",i);
if( s[i].front1==0 ) printf( "Blank, " );
else printf( "%d, ",s[i].front1 );
if( s[i].front2==0 ) printf( "Blank\n" );
else printf( "%d\n",s[i].front2 );
}
if( !( s[i].back1==0 && s[i].back2==0 ) )
{
printf("Sheet %d, back : ",i);
if( s[i].back1==0 ) printf( "Blank, " );
else printf( "%d, ",s[i].back1 );
if( s[i].back2==0 ) printf( "Blank\n" );
else printf( "%d\n",s[i].back2 );
}
}
}
int main()
{
int n,i,j,maxi;
while( scanf("%d",&n) && n )
{
inint();
if( n%4==0 )
maxi=n/4;
else maxi=n/4+1;
j=1;
for( i=1;i<=maxi;i++ )
{
s[i].front2=j++;
if( j>n ) break;
s[i].back1=j++;
if( j>n ) break;
}
for( i=maxi;i>=1;i-- )
{
if( j>n ) break;
s[i].back2=j++;
if( j>n ) break;
s[i].front1=j++;
}
output(n,maxi);
}
return 0;
}