提交时间:2023-01-19 17:22:52

运行 ID: 67813

#include <iostream> #include <cstdio> using namespace std; int main() { //freopen("set.in","r",stdin); //freopen("set.out","w",stdout); unsigned long long n,k,p,m = 0,Pow = 1,ans; cin>>n>>k>>p; while(Pow <= n) { m++; Pow*=k; } m--; Pow/=k; if((n - Pow) % (k - 1) == 0) ans = ((Pow * k - 1) / (k - 1) - 1) + ((n - Pow) / (k - 1) * k * (p - m)) + ((Pow - (n - Pow) / (k - 1)) * (p - m)); else ans = ((Pow * k - 1) / (k - 1) - 1) + ((n - Pow) / (k - 1) * k * (p - m)) + (((n - Pow) % (k - 1) + 1) * (p - m)) + ((Pow - (n - Pow) / (k - 1) - 1) * (p - m)); cout<<ans; return 0; }