0
点赞
收藏
分享

微信扫一扫

蓝桥杯试题算法训练之1的个数——Python满分解答


1的个数

  • ​​问题描述​​
  • ​​输入格式​​
  • ​​输出格式​​
  • ​​样例输入​​
  • ​​样例输出​​
  • ​​数据规模和约定​​
  • ​​解题思路​​
  • ​​代码实现​​

问题描述

输入正整数n,判断从1到n之中,数字1一共要出现几次。例如1123这个数,则出现了两次1。例如15,那么从1到15之中,一共出现了8个1。

输入格式

一个正整数n

输出格式

一个整数,表示1出现的资料

样例输入

15

样例输出

8

数据规模和约定

n不超过30000

解题思路

这题的一个思路是用数学运算把一个数的每一位都算出来。

假设有一个数a = 12345 :

  • 取个位 : (a / 1) % 10
  • 取十位: (a / 10) % 10
  • 取百位: (a / 100) % 10
  • … …

这是一种思路,另一种思路是把这个数直接转换成字符串,然后用for循环遍历这个字符串里的每一个字符(其实就是这个数的每一位),然后再转换成整型即可,下面看一下代码实现。

代码实现

def CountOne():
# The number of 1
n = int(input())
count = 0
for items in range(n + 1):
for item in str(items):
if int(item) == 1:
count += 1
print(count)

CountOne()

蓝桥杯试题算法训练之1的个数——Python满分解答_python


举报

相关推荐

0 条评论