描述
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入描述:
输入共1行,为两个正整数L和R,之间用一个空格隔开。
输出描述:
输出共1行,表示数字2出现的次数。
示例1
输入:
2 22
复制输出:
6
复制
示例2
输入:
2 100
复制输出:
20
复制
备注:
1≤L≤R≤10000。
解法思路:
将一个数取余10能得到个位数上的值,将一个数除以10能得到去掉个位数的值
c/c++:
#include <cstdio>
int main()
{
int times = 0;
int L, R;
scanf("%d %d", &L, &R);
for (int i = L; i <= R; ++i) {
int tmp = i;
while (tmp) {
if (tmp % 10 == 2) ++times;
tmp /= 10;
}
}
printf("%d", times);
return 0;
}
java:
import java.util.Scanner;
//
注意类名必须为Main,不要有任何 package xxx 信息
public class Main
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int l = in.nextInt(), r = in.nextInt();
int ret = 0;
for(int i = l; i <= r; i++)
{
int tmp = i;
while(tmp != 0)
{
if(tmp % 10 == 2) ret++;
tmp /= 10;
}
}
System.out.println(ret);
}
}