您的位置:首页 > 其它

HDU 1060 Leftmost Digit

2013-12-28 20:35 281 查看
Problem Description

Given a positive integer N, you should output the leftmost digit of N^N.



[b]Input
[/b]

[b]The input contains several
test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single positive integer N(1<=N<=1,000,000,000).
[/b]



[b]Output
[/b]

For
each test case, you should output the leftmost digit of N^N.




[b]Sample
Input

[/b]

2

3

4




[b]Sample
Output

[/b]

2

2


Hint
In the first case, 3 * 3 * 3 = 27, so the leftmost digit is 2.
In the second case,
4 * 4 * 4 * 4 = 256, so the leftmost digit is 2.

总结1:题意理解:输出 N的N次方 的 最左边 的 第一个数字。

总结2:r=(int)pow(10,n*log10(n)-(int)(n*log10(n)));

总结3:公式推导:
设n^n=a0*10^m+a1*10^(m-1)+...a0,a1...为相应位的系数,

m为数字位个数,

如4^4=256,a0=2,a1=5,a2=6,m=3;  

 a0*10^m<=n^n<(a+1)*10^m两边取对数m+lga0<=nlgn<m+lg(a0+1)

即lga0<=nlgn - m<lg(a0+1)

所以a0<=10^(nlgn-m)<a0+1;

  1<=a0<=9;

所以0<=lga0<1;

由m+lga0<=nlgn<m+lg(a0+1)两边取整得m=[nlgn](表示nlgn的整数部分)

所以a0=[10^(nlgn-[nlgn])]=pow(10,n*log10(n)-(int)n*log10(n))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: