在为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]);
}
}
我用给定的示例运行了代码,它运行良好。我有缺少的测试用例吗?
答案 0 :(得分:1)
word = " " + word;
您要在每个单词前面添加一个空格,并且该空格会显示在输出中。
您似乎正在这样做,因此可以从i=1
开始循环播放。最好不要从0
循环并调整s
的计算,而不是修改输入的单词。
for (int i = 0; i < word.length(); i++) {
// ^
int s = ((i+1) * 3) + k;
// ^^^^^
答案 1 :(得分:-1)
糟糕。语言错误。这是一个例子,这次是用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的不同。它可以保留负数。如果单词可能太长,那么您可能需要对此做更严格的操作。
力求了解此代码。它会教给您很多有关如何将字符作为数值处理的知识。如果您愿意的话,我可以为您做些注释。