门排制作
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 11 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
解法1. world 解法
-
输出1-2020每一个数,然后放到word里面进行替换,把2变成其他值,word 会自动统计替换了多少个2.
解法2.编程
-
编程第一个,需要得到每一位
怎么得到每一位?
最简单的就是得到个位,直接对10取余 数%10=各位
然后就是十位,数/10 %10 数除10伤就是前几位,然后再对前几位取余,得到前几位个位,即该数的十位
百位 数/10/10 %10 .....
想法和上面一致。
可以看出来,处理数需要先除10,然后取余10.可以考虑写循环。当然本题只需要四位,也可以直接每一位写出来。
取每一位的代码是:
num是统计几个2
while(x>0) {
if(x%10==2) {
num++;
}
x/=10;//位数变化
public class Main { public static void main(String[] args) { int num=0; for(int i=1;i<=2020;i++) { int x=i; while(x>0) { if(x%10==2) { num++; } x/=10;//位数变化 } } System.out.println(num); } }
}