集合S的定义如下:(1) 1在S内; (2) 如果x在集合S内,则2x+1与3x+1也在S内; (3) 只有满足条件(1)(2)的元素在S内.把S中的元素按递增顺序排列,请输出S中的第N个元素.输入:本题有多组测试数据.每组测试
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 06:21:42
集合S的定义如下:(1) 1在S内; (2) 如果x在集合S内,则2x+1与3x+1也在S内; (3) 只有满足条件(1)(2)的元素在S内.把S中的元素按递增顺序排列,请输出S中的第N个元素.输入:本题有多组测试数据.每组测试
集合S的定义如下:
(1) 1在S内;
(2) 如果x在集合S内,则2x+1与3x+1也在S内;
(3) 只有满足条件(1)(2)的元素在S内.
把S中的元素按递增顺序排列,请输出S中的第N个元素.
输入:本题有多组测试数据.每组测试数据一行,每行一个正整数N (1
集合S的定义如下:(1) 1在S内; (2) 如果x在集合S内,则2x+1与3x+1也在S内; (3) 只有满足条件(1)(2)的元素在S内.把S中的元素按递增顺序排列,请输出S中的第N个元素.输入:本题有多组测试数据.每组测试
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 100005;
int a[MAX];
static int size = 0;
void fun(int n)
{
if(size < MAX)
{
a[size++]=n;
fun(2*n+1);
fun(3*n+1);
}
}
int main()
{
size = 0;
fun(1);
sort(a,a + size);
int n;
while(cin>>n)
{
cout<<a[n-1]<<endl;
}
return 0;
}
思路是这样,不过看下范围,得用大数吧.可能第50几个数就超过2^32溢出了,而且为了递归到3*n+1,size也要修改.