hdu1443

/*
分析:
    模拟。
    n的范围很小,暂时也没有什么好的方法(除了打表。。。),就
试了试暴力模拟,312MS。
    这方法就没什么好说的了-、-I。


    顺便,给广大Acmer们拜个年:
    蛇年快乐~,祝同在不归道儿上奋斗的伙计们在新的一年中acm水平
进步如飞~,让啊们共同努力、奔着美好的明天,努力奋斗吧~O(∩_∩)O~


                                             2013-02-10
*/










#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int ans[14];
void init()
{
	int n,m;
	int l,j;
	int t,hash[30];
	for(n=1;n<14;n++)
	{
		for(m=n+1;;m++)
		{
			memset(hash,0,sizeof(hash));
			t=1;
			l=m%(2*n);
			if(!l)	l=2*n;
			if(l<=n)continue;
			hash[l]=1;
			while(t<n)
			{
				j=m%(2*n-t);
				if(!j)	j=2*n-t;
				while(j)
				{
					l++;
					if(l>2*n)	l-=2*n;
					if(!hash[l])j--;
				}
				if(l<=n)	break;
				else		{hash[l]=1;t++;}
			}
			if(t>=n)	{ans[n]=m;break;}
		}
	}
}
int main()
{
	init();
	int n;
	while(scanf("%d",&n),n)
		printf("%d\n",ans[n]);
	return 0;
}


你可能感兴趣的:(hdu1443)