PKU 1012 Joseph

1012 -- Joseph

#include <cstdio>

int main()
{
	int k , _n;
	int r[14];
	for(int i = 0; i < 14; i++) r[i] = 0;

	while(scanf("%d", &k), k){
		if(!r[k]){
			_n = k * 2;
			for(int i = k; ; i++){
				int n = _n, p = 0;
				while(n != k){
					p = (p + i) % n--;
					if(p < k) goto l;
					p %= n;
				}
				r[k] = i + 1;
				break;
l:;
			}
		}
		printf("%d\n", r[k]);
	}
	return 0;
}

これで数日間悩むようじゃとてもじゃないけど競技プログラマなんかにはなれんね!