我正在尝试从Google Kick Start 2018 Round A问题1甚至数字解决这个问题。我将所有代码都放在下面,在Eclipse中它可以正常工作,但是当我将这段代码粘贴到Google Kick Start网站并运行测试时,它给出了编译错误。
消息:ttyname失败:设备的ioctl不适当 Solution.java:2:错误:Main类是公共的,应该在名为Main.java的文件中声明 公共类Main {
问题:
Supervin有一个独特的计算器。该计算器只有一个显示屏,一个加号按钮和一个减号按钮。当前,整数N会显示在计算器显示屏上。
按加号按钮会将计算器显示屏上显示的当前数字增加1。类似地,按减号按钮会将计算器显示屏上显示的当前数字减少1。计算器不显示任何前导零。例如,如果计算器显示屏上显示100,则按下减号按钮一次将使计算器显示99。
Supervin不喜欢奇数,因为他认为奇数是“奇数”。因此,他只想使用计算器按钮来显示一个仅用偶数位表示的整数。由于计算器有点旧,并且按钮难以按下,因此他希望使用最少的按钮按下次数。
请帮助Supervin确定按下按钮的最小次数,以使计算器显示没有奇数位的整数。
输入
输入的第一行给出了测试用例的数量,T。每行以包含整数N的一行开始:Supervin计算器上最初显示的整数。
输出
如上所述,对于每个测试用例,输出一行包含Case #x:y的行,其中x是测试用例编号(从1开始),而y是按下按钮的最小次数。
限制
1≤T≤100。
时间限制:每个测试集20秒。
内存限制:1GB。
小型数据集(测试集1-可见) 1≤N≤105。
大型数据集(测试集2-隐藏) 1≤N≤1016。
样品
输入
4
42
11
1
2018
输出
情况1:0
案例2:3
案例3:1
案例4:2
在示例案例1中,最初显示在计算器上的整数没有奇数位,因此不需要按任何按钮。
在示例案例2中,按减号按钮3次将使计算器显示8。按3次以下按钮无法满足要求。
在示例案例3中,按一次减号按钮(使计算器显示0)或按一次加号按钮将使计算器显示一个不含奇数的整数。
在示例案例4中,按两次加号按钮将使计算器显示2020。仅按两次按钮就无法满足要求。
我从该类中删除了public,然后运行了测试,但随后给出了运行时错误,但是在Eclipse中它可以正常工作。
import java.util.Scanner;
class Main{
static long input_long;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("No of Test cases:");
int T = sc.nextInt();
String[] longArr = new String[T];
for(int i = 0;i < T;i++){
longArr[i] = sc.next();
}
for(int i = 0;i < longArr.length;i++) {
if(checkEven(longArr[i])) {
System.out.println("Case #"+(i+1)+": 0");
}
else {
System.out.println("Case #"+(i+1)+": "+result(longArr[i]));
}
}
sc.close();
}
static long result(String s) {
input_long = Long.valueOf(s);
long ret;
char[] arr = s.toCharArray();
if((arr[0]-'0')%2==0) {
return ret = increment(input_long);
}
else {
return ret = decrement(input_long);
}
}
static boolean checkEven(String a)
static long increment(long l)
static long decrement(long l)
答案 0 :(得分:0)
将您的班级名称从“ Main”更改为“ Solution”