N的N次方的最高位

发布于:2021-06-14 21:45:04

问题 H: N的N次方

时间限制:?1 Sec??内存限制:?32 MB
[提交][状态][讨论版]


题目描述

现给你一个正整数N,请问N^N的最左边的数字是什么?


输入

输入包含多组测试数据。每组输入一个正整数N(N<=1000000)。


输出

对于每组输入,输出N^N的最左边的数字。


样例输入

3
4

样例输出

2
2


?
题意概括:

给出一个小于1000000的任意整数N的,然后求出N的N次方的最高位是多少。


解题思路:

因为N^N可以写作a*10^k的形式,输出强制转化为整形的a就表示的最高位,然后比如说3*3*3=27,就可以写作2.7*10^1的形式。所以k就代表的是结果的位数-1,所以k=(int)log10(n^n)+1-1。因为n^n=a*10^k所以log10(n^n)=log10(a)+log10(10^k).可以知道n*log10(n)=log10(a)+k,所以a=10^(n*log10(n)-k)。


错误分析:

这题刚开始我就以为是一道直接写的题,然后我看肯定要超出限制的,所以我直接就没有写了然后听学长讲解了一下才理解这道题的意思。


#include
#include

int main()
{
int i,k;
double n,a;
while(scanf("%lf",&n)!=EOF)
{
k=n*log10(n);
a=pow(10,(n*log10(n))-k);
printf("%d
",(int) a);
}
return 0;
}

?


?

相关推荐

最新更新

猜你喜欢