1 条题解

  • 0
    @ 2025-11-30 16:27:50

    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
    上传者