Given a positive integer N, you should output the leftmost digit of N^N.
Input
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).
Each test case contains a single positive integer N(1<=N<=1,000,000,000).
Output
For each test case, you should output the leftmost digit of N^N.
Sample Input
2 3 4
Sample Output
2 2 数学~~~啊~~~~~~ 求N的N次方最左端的数字 设M = N ^ N,则log10(N^N) = log10(M),M = 10 ^ (N*log10(N)),10整数倍的最左边整数位为1,其他位为0,只需求N * log10(N)小数位</pre><br /><pre name="code" class="cpp">#include<cstdio> #include<cmath> int main(){ int a, t; double k; scanf("%d", &t); while(t--){ scanf("%d", &a); k = a * log10(a) - (long long)(a * log10(a)); printf("%d\n", (int)pow(10, k)); } return 0; }