题意:
求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 }