当前位置: 代码迷 >> 综合 >> 一本通————1211 判断元素是否存在
  详细解决方案

一本通————1211 判断元素是否存在

热度:56   发布时间:2023-12-28 05:17:43.0

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;
}