HDU 1060 Leftmost Digit

题意:

求N^N的首位数字,N不超过1000 000 000.

题解:

 1 /*
 2 m = n ^ n => log10(m) = n * log10(n) => m = 10 ^ (n * log10(n))。10的幂次中的整数的作用是增加0,
 3 10的幂次的结果中的各个位置的数字取决于其小数部分,1 < 10 ^ b < 10, 其中 0 < b < 1。因此设 n * log10(n)
 4 的小数部分是b,即求 10 ^ b 的个位上的数字。
 5 */
 6 #include <iostream>
 7 #include <cmath>
 8 
 9 using namespace std;
10 
11 int main()
12 {
13     int t, n;
14     cin >> t;
15     while (t--) {
16         cin >> n;
17         double temp = 1.0 * n * log10(n);
18         double b = temp - (long long)temp;
19         int ans = (int)pow(10, b);
20         cout << ans << endl;
21     }
22 }
View Code

 

posted @ 2016-07-27 22:31  luckilzy  阅读(171)  评论(0编辑  收藏  举报