N!一般是不可解的,所以在求取N!的位数时采用对数的思想方法,log(n!) = log(n)+log(n-1) + log(n-2) +...+log(2)
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
double sum[1000001];
void init()
{
for(int i = 2;i<=1000000;i++)
{
sum[i] = sum[i-1] + log10(i);
}
}
int main()
{
init();
int t,num,base;
double di;
scanf("%d",&t);
for(int i = 1;i<=t;i++)
{
di = 0;
scanf("%d %d",&num,&base);
double q = log10(base);
di = sum[num]/q;
printf("Case %d: %d\n",i,(int)di+1);
}
return 0;
}