判断元素是否存在(题解)

版权声明:华天才原创 https://blog.csdn.net/weixin_43891469/article/details/85104450

题目描述

有一个集合M是这样生成的:
(1) 已知k是集合M的元素;
(2) 如果y是M的元素,那么,2y+1和3y+1都是M的元素;
(3) 除了上述二种情况外,没有别的数能够成为M的一个元素。

问题:

任意给定k和x,请判断x是否是M的元素。
这里的k是无符号整数,x 不大于 100000。
如果是,则输出YES,否则,输出NO。

输入

输入整数 k 和 x, 逗号间隔。

输出

如果是,则输出 YES,否则,输出NO。

标程

#include<bits/stdc++.h>
using namespace std;
int k,x;
bool flag;
bool dfs(int a,int b)
{
	if(a>b)return false;
	if(a>100000)return false;
	if(a==b)return true;
	flag=dfs(a*2+1,b)||dfs(3*a+1,b);
	return flag;
}
int main()
{
	scanf("%d,%d",&k,&x);
	if(dfs(k,x)==true){
		cout<<"YES"<<endl;
		return 0;
	}
	cout<<"NO"<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43891469/article/details/85104450
今日推荐