侧边栏壁纸
  • 累计撰写 192 篇文章
  • 累计创建 2 个标签
  • 累计收到 87 条评论

【题解】T1333 Blah数集

Allen Best
2023-07-10 / 0 评论 / 0 点赞 / 48 阅读 / 503 字
温馨提示:
本文最后更新于 2023-07-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
#include<bits/stdc++.h>
using namespace std;
int a,n;
int q[1000000];
void work(int a,int n)
{
    int rear=2;
    q[1]=a;    //a一定是第一个数字
    int two=1,three=1;
    while(rear<=n)
    {
        long long t1=q[two]*2+1,t2=q[three]*3+1;
        int t=min(t1,t2);   //保证升序,先存一个小的
        if(t1<t2) two++;    //确定哪一个情况可以扩列
        else  three++;
        if(t==q[rear-1])    //去重处理
           continue;        //continue就是忽略下面的指令,回到循环开始的while
        q[rear++]=t;        //rear++,先调用,后自加,也可以理解为下面两行:
                            //                          q[rear]=t;
                            //                          rear++;
    }
    cout<<q[n]<<endl;
    
}
int main()
{
    while(cin>>a>>n) work(a,n);  //由于你不知道到底要处理多少组数据,所以当输入时就工作一次
    return 0;
    
}
0

评论区