题意:
有一个变量 x 和一个常数 y 。下面的操作要执行 k𝑘 次:
- 将 x 增加 11 ,然后
- 当数字 x 能被 y 整除时,再除以 y𝑦 。
请注意,这两个操作都是在一次操作中依次进行的。
例如,如果数字 x=16 、 y=3 和 k=2 ,那么经过一次运算后, x 就变成了 17 ,而经过另一次运算后, x 就变成了 2 ,因为加一后, x=18 就能被 33整除两次。
鉴于初始值为 x 、 y 和 k ,马克西姆想知道 x𝑥的最终值是多少。
分析:
有操作的 不能用枚举。
先让x变成1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
ll x,y,k;cin>>x>>y>>k;
while(k>0&&x!=1){
int c=min(y-x%y,k);
k-=c;
x+=c;
while(x%y==0)x/=y;
}
k%=(y-1);
x+=k;
cout<<x<<endl;
}
int main(){
int t;cin>>t;
while(t--){
sol();
}
}