题目:
小蓝要为一条街的住户制作门牌号。
这条街一共有2020位住户,门牌号从1到2020编号。
小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。
请问要制作所有的1到2020号门牌,总共需要多少个字符2?
分析:
1到2020号门牌,个位的 2,十位的 2,百位的 2,千位的 2 的2 个数累计:
我们如果只用for循环去判断的话,个位、十位、百位、千位同时存在时判断多次
不能判断该数是几位数构成。需要分为两位数,三位数,四位数的判断在写
1)if(x%10==2)
count++;
x/10;
if(x%10==2)
count++;
....
所以我们用for循环去对1到2020进行循环,再用while循环去判断1到2020之间的数
其中,我们发现一个数无论是百位,还是千位,只要先对这个数取余再除以10,就可以去掉它的最低位
如: 2022%10=2(+1) 2022/10=202
202%10=2(+2) 202/10=20
20%10=0 20/10=2 2%10=2(+3)
public class menpai {
public static void main(String[] args) {
int count=0;
for (int i = 1; i <=2020; i++) {
int x=i;
while(x>0)
{
if(x%10==2)
count++;
x=x/10;
}
}
System.out.println(count);
}
}