减少Java代码的运行时间

时间:2018-08-10 08:47:18

标签: java

有人可以告诉我如何减少该程序的运行时间吗?这是对代码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);
   }
}

1 个答案:

答案 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提高到数字的幂
  • 将其转换为字符串
  • 从字符串中获取最后两位数字并将其解析为数字
  • 将其添加到运行金额中

仅需<<,就可以将2提高到数字的幂。

可以使用%100来取得数字的最后两位数字。无需将数字转换为字符串,然后解析该字符串的子字符串。

因此这些行可以重写为:

    final long x = sc.nextLong();
    long n = 1L << x;
    sum += n%100;