[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;
void solve(){
int n,k;
cin>>n>>k;
int cnt=0,lim=sqrt(n),t=n,pos=1;
if(k<lim){//模拟
while(t>1){
t-=(t+k-1)/k;
cnt++;
}
for(int i=1;i<=cnt;i++){
pos=pos+(pos+k-2)/(k-1);
}
}else{
while(t>1){
int s=(t+k-1)/k,low=(s-1)*k+1;
int tempcnt=(t-low)/s+1;
if(s==1)tempcnt--;
cnt+=tempcnt;
t-=tempcnt*s;
}
while (cnt) {
int a=(pos+k-2)/(k-1),next=a*(k-1)+1,d=(next-pos+a-1)/a;
int step=min(d,cnt);
pos+=step*a;
cnt-=step;
}
}
cout<<pos<<endl;
}
signed main(){
int t=1;ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>t;
while(t--)solve();
return 0;
} |