求助
查看原帖
求助
700986
IkunFriendsChat楼主2022/12/29 14:39
#include<bits/stdc++.h>
using namespace std;
long long n,k,a,b;
long long fpow(long long d,long long z)
{
    long long ans=1ll;
    while(z)
    {
        if(z&1ll)ans=ans*d;
        z>>=1;
    }
    return ans;
}

int main()
{
    scanf("%lld%lld",&n,&k);
    if(k==1ll){printf("%lld",n);return 0;}
    if(n==1ll){printf("1");return 0;}
    for(a=2ll;a<=50ll;a+=1ll)
    {
        if(fpow(k,a)>n)break;
    }
    a-=1ll;
    b=n-fpow(k,a);
    printf("%lld",(b*k+1ll));
}

个人推出来的公式是:

ka+b=nk^a+b=n

ans=bk+1ans=b*k+1

求Hack/纠正

2022/12/29 14:39
加载中...