问题描述
给两个数a,b(0<a,b<10^12)
问a^b有几位
思路:
log10(a^b)=b*log10(a);
为什么要以10为底呢,是因为我们联想求位数时,每次都是/10操作。
又因为数太大了,以log为复杂度会降低
那么这道题就解决了
代码实现
#include <stdio.h>
#include <math.h>
int main()
{
long long a,b;
double temp;
scanf("%lld%lld",&a,&b) ;
temp = b*log10((double)a);
a = temp;
a++;
printf("%lld\n",a);
}