Contents
  1. 1. 分析:

分析:

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);//NlgN
ans = ans - (long long)ans;//只留小数部分
res = (int)pow(10.0, ans);
printf("%I64d\n", res);
}
return 0;
}
Contents
  1. 1. 分析: