欢迎关注我的微信公众号:
编程之蓁
ID:
bianchengzhizhen
及时分享算法、计算机科学以及游戏编程内容
本人CSDN博客主页:
https://blog.csdn.net/D16100?spm=1000.2115.3001.5343
欢迎互相交流学习
————————————————
题目:
题目:门牌制作
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020位住户,门牌号从 1 到 2020编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020号门牌,总共需要多少个字符 2 ?
运行限制
最大运行时间:1s
最大运行内存: 128M
C++源程序:
# include<iostream>
# include<bits/stdc++.h>
# include<math.h>
# include<algorithm>
using namespace std;
int main()
{
int count = 0; // 计数变量
for(int i = 1; i <= 2020; i++)
{
for(int j = i; j > 0; j = j / 10) // 拿到门牌号 并对其中的每个数进行判断,每个数的每个位进行判断
{
if(j % 10 == 2)
{
count++;
}
}
}
cout << count << endl;
}
个人心得:
这道题的关键在于对拿到的数的每个位置进行操作和判断。首先我们可以明白的是——用嵌套for循环可以拿到数,拿到数之后再对这个数的每一位进行操作。
其次我们还要知道:拿到数的每个位置所需要的操作 即是 / 10;(或者除以十的倍数);
想要得到这个位置上的数的操作的方法是:使用取余数——%10 对10取余;
涉及知识:
参考个人心得。