集合S的定义如下:(1) 1在S内; (2) 如果x在集合S内,则2x+1与3x+1也在S内; (3) 只有满足条件(1)(2)的元素在S内.把S中的元素按递增顺序排列,请输出S中的第N个元素.输入:本题有多组测试数据.每组测试
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/23 23:34:14
![集合S的定义如下:(1) 1在S内; (2) 如果x在集合S内,则2x+1与3x+1也在S内; (3) 只有满足条件(1)(2)的元素在S内.把S中的元素按递增顺序排列,请输出S中的第N个元素.输入:本题有多组测试数据.每组测试](/uploads/image/z/8550723-3-3.jpg?t=%E9%9B%86%E5%90%88S%E7%9A%84%E5%AE%9A%E4%B9%89%E5%A6%82%E4%B8%8B%3A%281%29+1%E5%9C%A8S%E5%86%85%3B+%282%29+%E5%A6%82%E6%9E%9Cx%E5%9C%A8%E9%9B%86%E5%90%88S%E5%86%85%2C%E5%88%992x%2B1%E4%B8%8E3x%2B1%E4%B9%9F%E5%9C%A8S%E5%86%85%3B+%283%29+%E5%8F%AA%E6%9C%89%E6%BB%A1%E8%B6%B3%E6%9D%A1%E4%BB%B6%281%29%282%29%E7%9A%84%E5%85%83%E7%B4%A0%E5%9C%A8S%E5%86%85.%E6%8A%8AS%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0%E6%8C%89%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%88%97%2C%E8%AF%B7%E8%BE%93%E5%87%BAS%E4%B8%AD%E7%9A%84%E7%AC%ACN%E4%B8%AA%E5%85%83%E7%B4%A0.%E8%BE%93%E5%85%A5%EF%BC%9A%E6%9C%AC%E9%A2%98%E6%9C%89%E5%A4%9A%E7%BB%84%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE.%E6%AF%8F%E7%BB%84%E6%B5%8B%E8%AF%95)
集合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也要修改.