[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;
}
posted @ 2010-03-26 17:20  timebug  Views(573)  Comments(0Edit  收藏  举报