ZOJ – 1130 Ouroboros Snake

2022-06-28 18:34:24 浏览数 (1)

本文最后更新于 1170 天前,其中的信息可能已经有所发展或是发生改变。

代码语言:javascript复制
// ZOJ - 1130 Ouroboros Snake.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include <cstdio>  
#include <iostream>  
#include <cstring>  
#include <cmath>  
#include <algorithm>  
#include <string.h>  
#include <string>  

#define eps 1e-8  
#define op operator  
#define MOD  10009  
#define MAXN  100100  
#define INF 0x7fffffff  
#define MEM(a,x)    memset(a,x,sizeof a)  
#define ll __int64  

const int M = (int)(1 << 16);

using namespace std;

int list[M];
int ans[M];
int len;
int m;

void dfs(int v)
{
	int w;
	//    cout<<"vvv  "<<v<<"  list "<<list[v]<<endl;  
	while (list[v]<2)
	{
		w = v * 2   list[v]; list[v]  ;
		//        cout<<"wwww  "<<w<<endl;  
		//        cout<<"w&m  "<<(w&m)<<endl;  
		dfs(w&m);
		//        cout<<"len  "<<len<<"  ww "<<w<<endl;  
		ans[len  ] = w;
	}
}

int main()
{
	//freopen("ceshi.txt","r",stdin);  
	int n, k;
	while (scanf("%d%d", &n, &k) != EOF)
	{
		if (n == 0 && k == 0)  break;
		MEM(list, 0);
		len = 0;
		m = (1 << (n - 1)) - 1;
		dfs(0);
		while (k--)
			len--;
		printf("%dn", ans[--len]);
	}
	return 0;
}

Post Views: 178

0 人点赞