在为加拿大CCC大赛练习时,我遇到了如下问题(https://dmoj.ca/problem/ccc12j4)。但是,当我使用官方评分员提交时,我无法得分。我知道平地机是合法的,而且我的代码没有超出时间或内存限制。
public static void main(String[] args) {
// TODO code application logic here
Scanner oIn = new Scanner(System.in);
int k = oIn.nextInt();
oIn.nextLine();
String word = oIn.nextLine();
word = " " + word;
char[] dCode = new char[word.length()];
char[] alphabet = {'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A', 'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A', 'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A', 'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A', 'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A', 'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A',};
for (int i = 1; i < word.length(); i++) {
char cur = word.charAt(i);
int s = (i * 3) + k;
for (int j = 1; j < 27; j++) {
if (alphabet[j] == cur) {
dCode[i] = alphabet[j + s];
}
}
}
for (int i = 0; i < word.length(); i++) {
System.out.print(dCode[i]);
}
}
我使用给定的示例运行代码,它工作正常。有没有我缺少的测试用例?
word = " " + word;
您在每个单词前面添加一个空格,并且空间显示在输出中。
看起来你正在这样做,所以你可以循环使用i=1
。而不是修改输入单词,最好从0
循环并调整s
的计算。
for (int i = 0; i < word.length(); i++) {
// ^
int s = ((i+1) * 3) + k;
// ^^^^^
哎呀。错误的语言。这是一个例子,这次在Java中:
public class x {
public static void main(String ...args) {
int K = 5;
String encoded = "JTUSUKG";
StringBuffer decoded = new StringBuffer();
K = K % 26;
for (int i = 0 ; i < encoded.length() ; i ++)
decoded.append((char)('A' + ((encoded.charAt(i) - 'A') - 3 * (i + 1) - K + 260000) % 26));
System.out.println(decoded.toString());
}
}
苦苦挣扎,想出额外的“+ 260000”。 Java模数运算符的工作方式与Python不同。它可以保留负数。如果单词可能超长,那么你可能想要做更严格的事情。
努力理解这段代码。它将教你如何将字符作为数值处理。如果你愿意,我可以通过逐件注释来帮助你。