扩大
缩小

NK1437: 校长杯

[ Source : Seaeagle ]
 1437: 校长杯

Time Limit: 1500 ms    Memory Limit: 32000 kB  
Judge type: Multi-cases Special Judge
Total Submit : 113 (54 users)   Accepted Submit : 70 (48 users)   Page View : 3994 
Font Style: Aa Aa Aa

        在南开大学,一年一度的“校长杯”三大球比赛是广大师生必不可少的一次运动大餐。随着南开大学学校规模的扩大和体育事业的发展,参与校长杯赛事的师生越来越多。竞赛采用的是传统的“循环赛”制,即每队的选手都必须和其他各队选手较量一次。为了竞赛日程安排方便,报名的队伍数n都将是2的k次幂,(0<k<9,且k为自然数)。为了避免参赛师生过于疲劳,竞赛安排每支队伍每天只比赛一次。同时,竞赛一共进行(n-1)天。
      现在,竞赛组委会想请你帮忙设计一个循环赛的日程表,使得竞赛的日程安排满足上述要求。

Input

输入只有一个数k。

Output

请输出一个n行,每行有n个正整数的循环赛日程表。相邻的两个正整数用一个空格隔开。
其中,第i行(0<i<n+1)表示第i队的参赛日程,第1个正整数为i,表示参赛队的队号,后面的(n-1)个正整数表示该队在参赛日程中,依次较量的队号。

Sample Input

1

Sample Output

1 2 2 1 

Source

Seaeagle

Best User : zhaojiedi1992

View Code
 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 int main()
 5 {
 6     int k,i,j,p,n;
 7     //int str1[300],str2[300];
 8     scanf("%d",&k);
 9     n=(int)pow(2,k);
10     p=n;
11     for(i=1;i<=n;i++)
12     {
13        p=n-1;
14        printf("%d",i);
15        j=i>0?i-1:n;
16        while(p--)
17        {
18            if(j<=0)j+=n;
19            printf(" %d",j--);
20        }
21        printf("\n");
22     }
23     //system("pause");
24     return 0;
25 }

 

posted on 2012-08-21 19:54  LinuxPanda  阅读(186)  评论(0编辑  收藏  举报

导航