2021-10-18
【问题描述】 小蓝要为一条街的住户制作门牌号。 这条街一共有2020位住户,门牌号从1到2020编号。 小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。 请问要制作所有的1到2020号门牌,总共需要多少个字符2? 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
法一:数学求解
#include<iostream>
using namespace std;
int main() {
int count1=0,count2 = 0, count3=0,countAll = 0;
//计算个位数的2(1-9)
count1 = 1;
//计算100里面的2的个数(1-99)
count2 = count1+(10+count1)+8*count1;
//计算1000里面2的个数(1-999)
count3 = count2 + (100+count2) + 8 * count2 ;//1-99中的2 + (200-299)中的2 + (100-199)-300-999)中的2
//计算2020里面中2的个数(1000-1999) 2000-2020
countAll = count3 + count3 + (21+3);
cout << countAll << endl;
return 0;
}
法二:
#include<iostream>
#include<string>
using namespace std;
int main() {
int count = 0;
int temp = 0;
for (int i = 1; i <= 2020; i++) {
temp = i;
while (temp) {
if (temp % 10 == 2) {
count++;
}
temp = temp / 10;
}
}
cout << count << endl;
return 0;
}
|