HDU 1060 数论, log10的一个用法

题意本身很好理解,就是求n^n的最高位是什么。

刚开始看,认为和HDU 1061题类似,找出几组数据去找规律。

发现毫无规律可循,只能干想,毫无思路。

看了http://hi.baidu.com/myacmjd/item/8c1637503cf24d9e8c12ed96,及http://hi.baidu.com/%CC%DA%D4%C6%BB%AA%CF%C4/blog/item/c7b7d3038f9e951a728b65dc.html的博客。一下子就理解了。

我对我认识到的总结下。

////////////////////////////////////////

霎时间想到的,认识不对,不过是做题激发出来的,还是留个认识吧,以备遗忘,欢迎补充详细信息。

任意一个数,总能表示成科学计数法。

即 x = m * 10^n (n>=0 && n为整数, m<=0 && m为浮点数)

计算机组成原理一书中曾讲过二进制浮点数的表示方法。

对于任意一个浮点数,那么10进制也能表示浮点数。

///////////////////////////////////////

令m = n ^ n, 左右同时取对数

log10(m) = n * log10(n), 即 m = 10 ^ (n * log10(n));

n * log10(n) 可拆分为整数部分和小数部分。

bit: 整数部分, float_point: 小数部分。

n * log10(n)  = 10 ^ bit * 10 ^ float_point;

10 ^ bit首位一定是1, 那么首位的数字就由10 ^ float_point决定, 同时可以看出bit正好是 n ^ n 的位数。

首位数字即为(int)10 ^ float_point

你可能感兴趣的:(c,float)