杭电ACM1060 Leftmost Digit

Problem Description
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).

Output
For each test case, you should output the leftmost digit of N^N.

题目大意:求n^n得最左边一位数字。

分析:最左边一位数字设为x,则:
x=[10^(nlgn-[nlgn])] ([]表示取整)

因为n^n的科学计数法表示为:10^(nlgn-[nlgn]*10^[nlgn].

import java.util.Scanner;
/**计算N^N的最左边的一位数*/
public class LeftmostDigit {
/*            calculate :[10^(nlgn-[nlgn])]*/
    public static void main(String args[]){
        Scanner s=new Scanner(System.in);
        int T=s.nextInt();
        for(int i=0;iint N=s.nextInt();
            double r=N*Math.log10(N);
            long t=(long)r;
            double x=r-t;
            int result=(int)(Math.pow(10, x));
            System.out.println(result);
        }
    }
}

你可能感兴趣的:(Acm)