高分求:双递推数列
请用C++语言集合M定义如下:(1)1∈M;(2)x∈M→2x+1∈M,3x+1∈M;(3)再无别的数属于M。试求集合M元素从小到大排列的第n个元素。输入n的值(n<=1...
请用C++语言
集合M定义如下:(1)1∈M;(2)x∈M→2x+1∈M,3x+1∈M;(3)再无别的数属于M。试求集合M元素从小到大排列的第n个元素。输入
n的值(n<=100000)
输出
第n项的值 展开
集合M定义如下:(1)1∈M;(2)x∈M→2x+1∈M,3x+1∈M;(3)再无别的数属于M。试求集合M元素从小到大排列的第n个元素。输入
n的值(n<=100000)
输出
第n项的值 展开
3个回答
展开全部
#include <stdio.h>
#include <vector>
#include <queue>
using std::vector;
using std::priority_queue;
class Compare{
public:
bool operator()(const int &a, const int &b){
return a>b;
}
};
typedef priority_queue<int, vector<int>, Compare> PriorityQueue;
int main(int argc, char* argv[])
{
int n = atoi(argv[1]?argv[1]:"100");
int x = 1;
PriorityQueue queue;
queue.push(x);
for( ; n > 0; --n ){
x = queue.top();
queue.pop();
queue.push(2*x+1);
queue.push(3*x+1);
}
printf("%d\n", x);
}
#include <vector>
#include <queue>
using std::vector;
using std::priority_queue;
class Compare{
public:
bool operator()(const int &a, const int &b){
return a>b;
}
};
typedef priority_queue<int, vector<int>, Compare> PriorityQueue;
int main(int argc, char* argv[])
{
int n = atoi(argv[1]?argv[1]:"100");
int x = 1;
PriorityQueue queue;
queue.push(x);
for( ; n > 0; --n ){
x = queue.top();
queue.pop();
queue.push(2*x+1);
queue.push(3*x+1);
}
printf("%d\n", x);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
亲,您的小球变色移动已经为您搞定了。再发给你。看看可以不。不行的话再改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询