1 条题解
-
0
C++ :
#include<iostream> #include<queue> #include<cstdio> using namespace std; queue<long long> a,b;//队列a存储2*x+1,队列 b存储3*y+1 long long n,y,z; int my_judge(long long,long long); void work(); int main() { //freopen("test6.in","r",stdin); //freopen("test6.out","w",stdout); cin>>n; work(); return 0; } void work() { int tot=1; a.push(1);//两队列初始值均为1; b.push(1); while(tot<=n) { int k=my_judge(a.front(),b.front());//判断两队列队首元素的值 if(k==1) { cout<<a.front()<<' '; y=2*a.front()+1;//先计算出队列a,b的下一个值 z=3*a.front()+1; a.pop();//如果a队列队首值小就输出,并将其出队 } if(k==2) { cout<<a.front()<<' '; y=2*a.front()+1;//先计算出队列a,b的下一个值 z=3*a.front()+1; a.pop(); b.pop();//如果a,b队列队首值相等输出一个,并将两个队首元素出队 } if(k==3) { cout<<b.front()<<' '; y=2*b.front()+1;//先计算出队列a,b的下一个值 z=3*b.front()+1; b.pop();//如果b队列队首值小就输出,并将其出队 } a.push(y); b.push(z); tot++; } } int my_judge(long long a,long long b) { if(a<b)return 1; if(a==b)return 2; if(a>b)return 3; }
- 1
信息
- ID
- 1408
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者