蒜头君有一个集合 M 是这样生成的:
(1) 已知 k 是集合 M 的元素;
(2) 如果 y 是 M 的元素,那么,2y+1 和 3y+1 都是 M 的元素;
(3) 除了上述二种情况外,没有别的数能够成为 M 的一个元素。
问题:给定 k 和 x(0 ≤ k ≤ x ≤10^5
),请判断 x 是否是 M 的元素。
如果是,则输出"YES",否则,输出"NO"。
输入格式
输入整数 k 和 x,逗号间隔。
输出格式
如果是,则输出"YES",否则,输出"NO"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
0,22
样例输出
YES
解题思路1:
#include <cstdio>
#include <iostream>
#include <queue>
using namespace std;
int k,x;
bool f(int y){
if(y > x) return false;
if(y == x) return true;
if(f( 2 * y + 1 ) || f( 3 * y + 1))return true;
return false;
}
int main(){
cin >> k;
cin.get();
cin >> x;
int a = k;
bool b = f(a);
if(b){
cout << "YES" << endl;
}else{
cout << "NO" << endl;
}
return 0;
}