java - 减少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);
}
}
解决方案
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;
推荐阅读
- apache-flink - Flink 错误 - 远程任务管理器意外关闭连接
- c++ - 在串行端口(QtSerialPort)读取传入字节的连续流
- javascript - 为什么单击事件会被多个鼠标事件阻止?
- next.js - Vercel 无服务器功能未运行 axios 发布请求
- arrays - 在C中为char数组赋值
- python - Python 3.9.5 和 Python 3.9.6 上 datetime.astimezone 的不同行为
- javascript - 加载脚本时出现内容安全策略错误
- windows - 为什么无法出现控制窗口?
- php - 失败:代码:404 值:未找到详细信息(如果有):未找到段“作业”Microsoft Azure [Blob 创建] PHP SDK 的资源
- notion-api - Notion API - Update Relation Support