By
yusijia
Updated:
分析:
N^N = d.xxx * 10^(k-1) ,k 是N^N的位数
10 ^(log10N^N) = N^N // Log10(N^N)是double型的
所以d.xxx = 10^(lgN^N - (k-1));
k = lgN^N的整数部分+1 //注意这个是int型的
所以d = 10 ^ (lgN^N - lgN^N) //注意第一个lgN^N是double型,第二个是int型,说明只与lgN^N的小数部分有关
得: d = 10 ^ (NlgN - NlgN);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream> #include <cmath> #include <cstdio> using namespace std;
int main() { int T; double ans; long long n, res; cin >> T; while(T--) { scanf("%I64d", &n); ans = n * log10((double)n); ans = ans - (long long)ans; res = (int)pow(10.0, ans); printf("%I64d\n", res); } return 0; }
|