有人可以告诉我如何减少该程序的运行时间吗?这是对代码vita 2018中所问问题的解答,我遇到了时间错误。
import java.util.Scanner;
public class HelloWorld{
public static void main(String []args){
Scanner sc = new Scanner(System.in);
long sum = 0;
int N = sc.nextInt();
for (int i = 0; i < N; i++) {
final long x = sc.nextLong(); // read input
String str = Long.toString((long) Math.pow(1 << 1, x));
str = str.length() > 2 ? str.substring(str.length() - 2) : str;
sum += Integer.parseInt(str);
}
System.out.println(sum%100);
}
}
答案 0 :(得分:0)
final long x = sc.nextLong(); // read input
String str = Long.toString((long) Math.pow(1 << 1, x));
str = str.length() > 2 ? str.substring(str.length() - 2) : str;
sum += Integer.parseInt(str);
这似乎是
仅需<<
,就可以将2提高到数字的幂。
可以使用%100
来取得数字的最后两位数字。无需将数字转换为字符串,然后解析该字符串的子字符串。
因此这些行可以重写为:
final long x = sc.nextLong();
long n = 1L << x;
sum += n%100;