判断元素是否存在

http://noi.openjudge.cn/ch0113/41/
根据题意,可以知道既然k是属于M了,那么M中其他的元素应该比k都要大,因此可以通过递归来做。
递归出口是当x==k,说明找到对应的元素;
或者x-1不能被2或3整除,说明没有对应的元素;

#include 
#include 
#include 
#include 

using namespace std;

int k, x;

bool dfs(int n) {
	if (n == k) {
		return true;
	}
	n--;
	if (n % 6 == 0) {
		return dfs(n/3) || dfs(n / 2);
	}
	if (n % 2 == 0) {
		return dfs(n / 2);
	}
	if (n % 3 == 0) {
		return dfs(n / 3);
	}
	return false;
}

int main() {
	scanf("%d,%d", &k, &x);
	if (dfs(x)) {
		printf("YES");
	}
	else {
		printf("NO");
	}
	return 0;
}

你可能感兴趣的:(poj)