我正在解决竞争问题,在问题上,我正在使用扫描仪进行用户输入 这些是2个代码段,一个关闭扫描器,另一个没有关闭扫描器。
关闭扫描仪
import java.util.Scanner;
public class JImSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
while (n-- > 0) {
double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
System.out.println((int) number - number == 0 ? "Yes" : "No");
}
scanner.close();
}
}
不关闭扫描仪
import java.util.Scanner;
public class JImSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
while (n-- > 0) {
double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
System.out.println((int) number - number == 0 ? "Yes" : "No");
}
}
}
第一个(关闭扫描仪)给我得分14.47
,
第二个(不关闭扫描仪)给出15.22
我认为编译器在使用scanner.close();
时释放了资源,这就是为什么分数存在差异。
这是评分判断公式。
分配为100.假设您提交了n的解决方案 字符,然后你的分数是(56 / n)* 100.
答案 0 :(得分:4)
你开玩笑吧?一个解决方案的得分为14.47。这意味着您的源代码为分配为100.假设您提交了n的解决方案 字符,然后你的分数是(56 / n)* 100.
56 / (14.47/100) =~= 387
个字符。(=~=
缺少“约等于”符号)
在另一个例子中,您的得分为15.22,这意味着您的源代码长度为56 / (15.22/100) =~= 368
个字符。
29个字符的差异,这可能是您的源代码行的长度scanner.close();
(包括前导空格,两个尾随空格和回车符/换行符对)
这与代码的性能无关。