门牌制作(蓝桥杯省赛B组)

158 阅读1分钟

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝要为一条街的住户制作门牌号。

这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。

小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。

请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码如下:

#include <iostream>
using namespace std;

int main() {
	int two = 0;
	for (int i = 1; i <= 2020; i++) {
		if (i >= 1 && i <= 9) { //个位级
			if (i == 2)
				two++;
		}
		if (i >= 10 && i <= 99) { //十位级
			if (i % 10 == 2)
				two++;
			if (i / 10 == 2)
				two++;
		}
		if (i >= 100 && i < +999) { //百位级
			if (i % 10 == 2)
				two++;
			if (i / 10 % 10 == 2)
				two++;
			if (i / 100 == 2)
				two++;
		}
		if (i >= 1000) { //千位级
			if (i % 10 == 2)
				two++;
			if (i / 10 % 10 == 2)
				two++;
			if (i / 100 % 10 == 2)
				two++;
			if (i / 1000 == 2)
				two++;
		}
	}
	cout << two;
}