1211:判断元素是否存在时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7489 通过数: 2908 【题目描述】有一个集合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。 【输入样例】0,22 【输出样例】YES 【来源】No |
#include <bits/stdc++.h>
using namespace std;bool flag=false;void calculate(int x,int y) //递归计算
{if(flag){return ;}if(x==y){flag=true;return ;}if(x>y)return ;calculate(x*2+1,y);calculate(x*3+1,y);return ;
}int main()
{string str;cin>>str;int len=str.length(),x=0,y=0,i=0;while(str[i]!=','){x=x*10+str[i]-'0';i++;}i++;while(i<len){y=y*10+str[i]-'0';i++;}calculate(x,y);if(flag)cout<<"YES"<<endl;elsecout<<"NO"<<endl;return 0;
}