数字卡片(Python)

数字卡片(Python)数字卡片 Python 问题解决 python 卡片

大家好,欢迎来到IT知识分享网。

一、题目要求

二、输入输出

输入格式:

在一行中输入0-9为一套的数字卡片的套数。比如:输入3。就表示有3套卡片,其中每一套卡片都含 0 到 9 各 1 张,3套就是30张,最多拼到10。

输出格式:

在一行中输出可以从1拼到的值。

1、样例1:

3

10

2、样例2:

2023

3183

三、题目解析

1.数字卡片演示

  1 2 3 4 5 6 7 8 9 除0之外,个位1-9各出现一次
10 11 12

13

14 15 16 17 18 19 个位0-9各出现一次,十位10个1
20 21 22 23 24 25 26 27 28 29 个位0-9各出现一次,十位10个2
……
90 91 92 93 94 95 96 97 98 99 个位0-9各出现一次,十位10个9
目前除0在个位少出现1次,在十位少出现10次以外,1-9出现次数相同
100 101 102 103 104 105 106 107 108 109 个位0-9各出现一次,十位10个0,百位10个1
110 111 112 113 114 115 116 117 118 119 个位0-9各出现一次,十位10个1,百位10个1
120 121 122 123 124 125 126 127 128 129 个位0-9各出现一次,十位10个2,百位10个1
……
990 991 992 993 994 995 996 997 998 999 个位0-9各出现一次,十位10个9,百位10个9
从100到现在,除了0在百位少出现100次外,1-9出现次数相同
……

2.数字卡片分析

根据上表可知,当数字逐渐增加时,除0以外的数字出现次数逐渐持平,并且持平趋势呈现从数字1向数字9的出现逐渐持平的趋势,也就是说,在数字增大的过程中,小的数字先用,随数字增大,再用大的数字,并逐渐持平(0除外)。但是数字卡片是有限的,所以在拼数字卡片的过程中,如果出现数字卡不足的情况,必然是小的数字卡先不足,即‘1’的数字卡不足。

四、解决问题

1、输入卡片个数

num=int(input())  

2.定义一个逐渐增加的数字,代表拼成的数字
i=0  

3.一个循环,当还有数字卡片的时候,数字+1

while True:  
    if(num>=0):    #问题1:为什么是>=
        i+=1
        s=str(i)
        n=s.count(‘1’)
        num-=n
    else:break

4.输出可以拼成的最大数

print(i-1)     #问题2:为什么-1

5.问题1:为什么是>=0:

因为1如果恰好用完后暂且不用数字1,改用其他数字,这时候其他数字卡片是有余额的,所以数字还可以再次增加。

6.问题2:为什么-1:

因为前面的条件是num>=0,当num=0时,数字卡片用光了,但如果下一个数字还会用到数字1,这个时候的数据会比需要的数据大一个。

五、运行代码

num=int(input()) i=0 while True: if(num>=0): i+=1 s=str(i) n=s.count('1') num-=n else:break print(i-1)

六、提交结果

195f4b4ee52145b29bdcce068b2ad829.png

七、最后的话

如果有错误,感谢各位大佬评论区指出,想要讨论的话可以留言。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149897.html

(0)
上一篇 2025-03-21 19:20
下一篇 2025-03-21 19:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信