题目链接:http://115.159.40.116/problem_show.php?pid=5409
http://acm.nyist.net/JudgeOnline/problem.php?pid=841
http://acm.nyist.net/JudgeOnline/problem.php?pid=841
题目描述
求N^N的个位数字大家应该都会了,可是,N^N的最高位数字你会求吗?
输入
多组测试数据。
每组数据输入一个正整数N(N≤1,000,000,000)。
每组数据输入一个正整数N(N≤1,000,000,000)。
输出
对于每组数据,输出N^N的最高位数字。
样例输入
3 4
样例输出
2 2
AC代码:
/*先计算log10(m^m),即ans=m*log10(m),
把ans分为小数部分与整数部分,
然后pow(10,ans)=pow(10,整数部分)*pow(10,小数部分)
而10^整数时,其最高位一定为1,
所以求出pow(10,小数部分)的最高位即可
*/
#include <stdio.h>
#include <math.h>
int main() {
double m, interger;
while(~scanf("%lf", &m)) {
//modf()将一个小数的整数部分与小数部分分离,返回值是小数,得到的整数会存入第二个参数
m = modf(m*log10(m), &interger);// @
m = pow(10,m);
modf(m, &interger);
//可能会有疑问,你就知道m一定>1? 就这么直接输出?
//因为方程y=10^m必定过(0,1),m>0时y一定大于1,显然@处的m>0
printf("%d\n", (int)interger);
}
return 0;
}