[PKU] 1012 Joseph [约瑟夫环,枚举]

题目来源:PKU 1012 [Central Europe 1995]

简单分析:因为这题时间和内存都卡得比较紧,也实在没其他有效的办法,但结果的数据量却不大,容易枚举出来。

AC代码如下:

#include<stdio.h>



void init()

{

	int k,i,m,n,r,t;

	for(k=1;k<14;++k) {

		if(k==1) printf("2,");

		else {

		r=0;

		for(i=k+1;r!=k;++i) {

			m=2*k;

			r=0;

			n=i%m;

			if(n==0) n=m;

			while(n>k) {

					r++;

					if(r==k) break;

					t=n;

					n=i%(m-1);

					if(t+n<=m) n=t+n-1;

					else n=t+n-m;

					m--;

			}

		}

		printf("%d,",i-1);

		}

	}

}



int a[]={2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};



int main()

{

	// init();

	int k;

	while(scanf("%d",&k)!=EOF&&k) {

		printf("%d\n",a[k-1]);

	}

	return 0;

}

你可能感兴趣的:(约瑟夫环)