题目:现给你一个正整数N,请问N^N的最左边的数字是什么?
刚看题目,感觉用最原始的办法来解决必然是超时,超内存。而题目只要求求出最左边的数字,所以肯定存在一个比较简单的办法。
上网查了资料后,这题的解决办法让我惊呆了。
分析过程:
设S=N^N,两边取对数:
log S = N*log N
所以S = 10^(N*log N)
而题目求的是最座边的数字
所以只需求10^log N的最左边的数字就行了。
这样运算量会少很多
Java代码:
import java.util.Scanner;
public class Main1088{
private static Scanner s =new Scanner(System.in) ;
public static void main(String[] args) {
while(s.hasNext()){
long n = s.nextLong() ;
long sum = 0 ;
double result = n*Math.log10(n) ;
sum = (long)result ;
result = result - sum ;
String str = Double.toString(Math.pow(10, result)) ;
System.out.println(str.charAt(0));
}
}
}
样例输入
3
4
样例输出
2
2
------------------------------------------------------------------------------------------------------------------------------
运行结果:3
2
4
2
--------------------------------------------------成功,可以AC