0是不是正整数 0是有理数还是无理数
本次的题目如下所示(原题出处:蓝桥杯)
【编程实现】
用户输入一个正整数N(3<=N<=9)。从0到N之间的所有正整数(包含0和N)中选择三个,组成一个三位数(0不能作为百位数),且这个三位数为奇数,请计算出共有多少种满足条件的三位数组合。(注意:组成的每个三位数各个位上的数字不能重复)
输入描述:输入一个正整数N(3<=N<=9)
输出描述:输出满足条件的三位数组合的个数
【样例输入】
3
【样例输出】
8
【上述输入输出样例的进一步解释】
用户输入的正整数,即样例输入为3,也就是将0、1、2、3四个数字进行组合。符合要求的三位数为:103、123、203、213、201、231、301、321共8个,所以样例输出为8。
这道题也是一个非常经典的算法问题,解决这道题我们还是要使用枚举的方式。关键问题在于如何枚举。我们需要组成一个三位数,从100到321进行枚举吗?这样明显是不合理的,因为中途有大量的数字与题目要求不相符。那这道题最佳的解法是枚举各个数位上的数字。
题目中提出百位数不能是0,那百位数的范围是1到n;十位数没有任何限制,十位数的范围是0到n;个位数要求是奇数,范围是1到n之间的奇数。我们假设百位、十位、个位变量名为i、j、k,那我们可以得出它们的范围分别为:
i:range(1, n + 1)j:range(0, n + 1)k:range(1, n + 1, 2)题目中提出要求,各个数位上的数字不能重复,那在枚举的范围内判断百位、十位、个位两两不相等,则满足条件,通过这个思路,我们很容易得到程序的代码:
n = int(input())
count = 0
for i in range(1, n + 1):
for j in range(0, n + 1):
for k in range(1, n + 1, 2):
if i != j and i != k and j != k:
count += 1
print(count)本题考查的是枚举算法和循环的嵌套,题目难度★★★
此道题其实改编自一道经典题目,原题如下所示:
有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?它们分别是多少?
本道题的难度略小于原题,两道题的思路是如出一辙。我们同样是将百位、十位、个位的变量名定义为i、j、k,可以看出,它们的范围都是range(1, 5)。这道题除了要我们求出个数外,还要将这些数全部输出,满足条件的情况下,我们只要使用100 * i + 10 * j + k即可得到这个三位数。
代码如下:
count = 0
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if i != j and i != k and j != k:
print(100 * i + 10 * j + k)
count += 1
print(&39;总数:&39;, count)当然,在三个数位上的数字都相同的情况下,我们可以优化一下代码。毕竟这样循环的话,不同数位上的数字相同也参与了循环,增加了循环次数。如果百位上已经选取的数排除掉,十位上则少循环1个数字,十位上选取的数字再排除掉,各位上则少循环2个数字,我们看看如何在进入循环之前将已选中的数字排除掉。
r = list(range(1, 5))
count = 0
for i in r:
t = r[:] 复制一个列表出来
t.remove(i) 进入下一级循环前删除已选中的百位数
for j in t:
u = t[:]
u.remove(j) 进入下一级循环前删除已选中的十位数
for k in u:
print(100 * i + 10 * j + k)
count += 1
print(&39;总数&39;, count)
伯克希尔哈撒韦A第一季度净利润355亿美元
伯克希尔哈撒韦A第一季度净利润355.04亿美元,去年同期为55.8亿美元;第一季度营收853.93亿美元,去年同期为708亿美元;第一季度投资和衍生品收益为347.58亿美元,去年同期为亏损19.78亿美元。本文源自金融界0001太惊讶!重大会议史无前例出现‘先立后破’的提法!
大财经2023-12-12 12:11:270000底部确立,股市未来慢慢变好
收评:底部确立,股市慢慢变好。从目前来看,上证2900点的大底已经确立,但股市逻辑与信心重新建立,仍需要一定的时间,目前依然处于底部构造阶段。说一下我呢看法,供各位朋友们参考,简单点说。1、上证2900点附近底部已经确立,但股市逻辑与信心重建,仍需要一定的时间,所以目前依然需要足够的耐心。0000应援是什么意思? 应援色什么意思
哇塞,小姐姐小哥哥好漂亮,为小姐姐爆灯,为小哥哥打call!相信很多人都看到过这句话,那么为谁爆灯什么意?爆灯打call是什么意思?最近总会在一些微博热评下看到为爆灯,为谁打电话,为谁打call,尤其是自己爱豆或者是喜欢的事情,爆灯就变得非常常见了,那么,为谁爆灯什么意思?爆灯打call是什么意思?为谁爆灯是啥意思大财经2023-03-24 00:22:270000立夏是什么意思 立夏是几月几
还有两天的时间,就是立夏节气了,立夏是二十四节气中的第七个节气,也是夏季的第一个节气,立夏,万物至此皆长大,立夏以后,雷雨增多,温度升高,日照强烈,万物都进入了旺盛期,尤其是北方的农作物小麦,已进入茁壮成长阶段。大财经2023-03-23 19:04:290000