登陆注册
15464

0是不是正整数(0是有理数还是无理数)

大财经2023-03-24 20:18:360

【编程实现】

count += 1

u.remove(j) 进入下一级循环前删除已选中的十位数

print(count)本题考查的是枚举算法和循环的嵌套,题目难度★★★

count = 0

有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?它们分别是多少?

for k in range(1, 5):

用户输入的正整数,即样例输入为3,也就是将0、1、2、3四个数字进行组合。符合要求的三位数为:103、123、203、213、201、231、301、321共8个,所以样例输出为8。

【样例输出】

count = 0

t = r[:] 复制一个列表出来

print(&39;总数&39;, count)

t.remove(i) 进入下一级循环前删除已选中的百位数

【样例输入】

count += 1

for i in range(1, n + 1):

此道题其实改编自一道经典题目,原题如下所示:

if i != j and i != k and j != k:

本次的题目如下所示(原题出处:蓝桥杯)

用户输入一个正整数N(3<=N<=9)。从0到N之间的所有正整数(包含0和N)中选择三个,组成一个三位数(0不能作为百位数),且这个三位数为奇数,请计算出共有多少种满足条件的三位数组合。(注意:组成的每个三位数各个位上的数字不能重复)

print(&39;总数:&39;, count)当然,在三个数位上的数字都相同的情况下,我们可以优化一下代码。毕竟这样循环的话,不同数位上的数字相同也参与了循环,增加了循环次数。如果百位上已经选取的数排除掉,十位上则少循环1个数字,十位上选取的数字再排除掉,各位上则少循环2个数字,我们看看如何在进入循环之前将已选中的数字排除掉。

for k in u:

这道题也是一个非常经典的算法问题,解决这道题我们还是要使用枚举的方式。关键问题在于如何枚举。我们需要组成一个三位数,从100到321进行枚举吗?这样明显是不合理的,因为中途有大量的数字与题目要求不相符。那这道题最佳的解法是枚举各个数位上的数字。

8

3

if i != j and i != k and j != k:

for k in range(1, n + 1, 2):

代码如下:

for j in t:

print(100 * i + 10 * j + k)

题目中提出百位数不能是0,那百位数的范围是1到n;十位数没有任何限制,十位数的范围是0到n;个位数要求是奇数,范围是1到n之间的奇数。我们假设百位、十位、个位变量名为i、j、k,那我们可以得出它们的范围分别为:

n = int(input())

print(100 * i + 10 * j + k)

r = list(range(1, 5))

【上述输入输出样例的进一步解释】

输出描述:输出满足条件的三位数组合的个数

输入描述:输入一个正整数N(3<=N<=9)

count += 1

count = 0

for i in range(1, 5):

for j in range(0, n + 1):

本道题的难度略小于原题,两道题的思路是如出一辙。我们同样是将百位、十位、个位的变量名定义为i、j、k,可以看出,它们的范围都是range(1, 5)。这道题除了要我们求出个数外,还要将这些数全部输出,满足条件的情况下,我们只要使用100 * i + 10 * j + k即可得到这个三位数。

u = t[:]

i:range(1, n + 1)j:range(0, n + 1)k:range(1, n + 1, 2)题目中提出要求,各个数位上的数字不能重复,那在枚举的范围内判断百位、十位、个位两两不相等,则满足条件,通过这个思路,我们很容易得到程序的代码:

for i in r:

for j in range(1, 5):

0000
评论列表
共(0)条
热点
关注
推荐