题目描述
集合M定义如下:
(1)1∈M;
(2)x∈M→2x+1∈M,3x+1∈M;
(3)再无别的数属于M。
试求集合M元素从小到大排列的第n个元素。
输入
n的值(n<=100000)
输出
第n项的值
样例输入
2
样例输出
3
#include<iostream> using namespace std; int main() { int n; int a[100001]; cin>>n; int p1=1,p2=1; a[1]=1; for(int i=2;i<=n;i++) if(a[p1]*2+1<a[p2]*3+1) a[i]=a[p1++]*2+1; else { a[i]=a[p2]*3+1; if(a[p1]*2+1==a[p2]*3+1) p1++; p2++; } cout<<a[n]<<endl; return 0; }