进制数为b,输入为n,则b进制下的n的位数为logb(n),然后换底公式可求解。
#include <iostream>
#include <cmath>
#include <vector>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1e6+5;
int t,n,b,k;
double ans[maxn];
void ini()
{
memset(ans,0,sizeof(ans));
for(int i=1;i<=1000000;i++)
ans[i]=log10(i)+ans[i-1];
}
int main()
{
ini();
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&b);
printf("Case %d: %lld\n",++k,(long long int)(ans[n]/log10(b)+1ll));//1ll就是long long int格式的1
}
return 0;
}