一、题目链接
http://noi.openjudge.cn/ch0105/41/
二、解题思路
⑴ 根据题意,通过余10法和除10法,依次检测当前整数i的各数位,如果是2则令结果ans++即可;
⑵ 设定两个int变量t、ans,其中t用于暂存当前数i,ans代表[L,R]区间内所有整数包含数字2的个数,初始时
ans为0;
⑶ 从L开始,到R为止,通过循环,做以下操作:
① 令t = i,也即将当前数i暂存于t中;
② 在当前数i尚未降阶为0时,通过循环,做以下操作:
◎ 利用余10法获取当前数i的个位数,如果此时个位数为2,则令ans++;
◎ 利用除10法移除当前数i的个位数;
⑷ 以上操作结束后,ans中存储了[L,R]区间内所有整数包含数字2的个数。
三、程序代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int L = scanner.nextInt();
int R = scanner.nextInt();
int ans = 0;
int t;
for (int i = L; i <= R; i++) {
t = i;
while (t != 0) {
if (t % 10 == 2) {
ans++;
}
t = t / 10;
}
}
System.out.print(ans);
}
}