【门牌制作】
题目描述:
小蓝要为一条街的住户制作门牌号。
这条街一共有2020 位住户,门牌号从1 到2020 编号。
小蓝制作门牌的方法是先制作0 到9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017 需要依次粘贴字符1、0、1、7,即需要1 个字符0,2 个字符1,1 个字符7。
请问要制作所有的1 到2020 号门牌,总共需要多少个字符2?
原题链接:0门牌制作-蓝桥云课
1、暴力法:
#include <iostream>
using namespace std;
int main()
{
int count = 0;
int i;
for(i=1; i<=2020; i++){
if(i%10==2){
count++;
}
if(i/10%10==2){
count++;
}
if(i/100%10==2){
count++;
}
if(i/1000==2){
count++;
}
}
cout<<count;
return 0;
}
2、需要一点点算法:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int count=0;
int i, j;
for(i=1; i<=2020; i++){
for(j=i; j>0; j=j/10){ //j>0; j=j/10 很巧妙
if(j%10==2){ //这个就是有字符2的话就会计数一次
count++;
}
}
}
cout<<count;
return 0;
}
// “举一反三”:求一个数的倒数
//j>0;j=j/10
//例num=12345,先num%10,取出5;
//再/10就变成了1234,再%10,又取出4,往复操作
//最终可得到倒数54321