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

问题描述

输入正整数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()

在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页