nyoj841最高位数字

题目链接:http://115.159.40.116/problem_show.php?pid=5409
http://acm.nyist.net/JudgeOnline/problem.php?pid=841

题目描述

求N^N的个位数字大家应该都会了,可是,N^N的最高位数字你会求吗?

输入

多组测试数据。
每组数据输入一个正整数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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值