题目描述
现给你一个正整数N,请问N^N的最左边的数字是什么?
输入
输入包含多组测试数据。每组输入一个正整数N(N<=1000000)。
输出
对于每组输入,输出N^N的最左边的数字。
样例输入
3
4
样例输出
2
解题思路:
将n^n转化为科学计数法,即n^n=a*10^x, x等于n^n的位数减一,即x=log10(n^n),因为x是科学计数法的幂次,因此x应取整数
对式子两边取对数,可得到n*long10 (n)=log10(a)+x;化简可得a=10^(n*log10(n)-x);
代码:
#include<stdio.h>
#include<math.h>
int main()
{
double n,m;
int x,a;
while(scanf("%lf",&n)!=EOF)
{
x=(int)n*log10(n);
a=(int)pow(10,n*log10(n)-x);
printf("%d\n",a);
}
return 0;
}
#include<math.h>
int main()
{
double n,m;
int x,a;
while(scanf("%lf",&n)!=EOF)
{
x=(int)n*log10(n);
a=(int)pow(10,n*log10(n)-x);
printf("%d\n",a);
}
return 0;
}