试题 A:逃离高塔
本题主要考察循环遍历与数据类型溢出问题。在计算过程中,中间结果可能超出 int 范围,需使用 long 类型存储。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); // 输入 n
long ans = 0;
for (long i = 1; i <= 2025; i++) {
long x = i * i * i;
if (x % 10 == 3) {
ans++;
}
}
System.out.println(ans);
}
}
最终答案为 202。
试题 B:消失的蓝宝
题目要求寻找满足特定整除条件的数。直接逐个遍历效率过低,可利用数学性质优化:目标数加 20250412 需被 20240413 整除,且该数本身是 20240413 的倍数。
设 n1 为 20240413 的倍数,每次递增 20240413。令 n2 = n1 - 9999,判断 n2 是否能被 20250412 整除。若满足,则 n1 - 20250412 即为所求。
public class Main {
public static void {
( ; n1 < Long.MAX_VALUE; n1 += ) {
n1 - ;
(n2 % == ) {
System.out.println(n1 - );
;
}
}
}
}


