其他分享
首页 > 其他分享> > 求N^N的最高位

求N^N的最高位

作者:互联网

给你一个整数N,求N^N的最高位数字是多少

比如:3^3=27,它的最高位是2
4^4=256,它的最高位是2;
最先想到的是用快速乘求n^n的值,再求最高位,但太麻烦了
我们知道
在这里插入图片描述
在这里插入图片描述
A是整数部分,B是小数部分
比如:求66的最高位
log10(66)=6*log10(6)=log10(46656)=log10(k)≈4.6689075=A.B
因为log10(k)=A.B; 46656=k=10A.B=10A * 100.B=nn;
10A是10的倍数,我们要求nn的最高位只要去掉10A,求100.B即可。
相当于求nn/10A

#include<stdio.h>
#include<math.h>
int main()
{
	int n,ans;
	double b;
	scanf("%d",&n);
	b=n*log10(1.0*n);       //求A.B
	b=b-(int)b;             //求0.B
	ans=(int)pow(10.0,b);   //求10^0.B的整数部分
	printf("%d\n",ans);
	return 0;
}

标签:nn,int,10A,ans,最高,log10
来源: https://blog.csdn.net/weixin_43731785/article/details/88054714