#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;
}
评论区