蓝桥杯_第二周训练题
时间:2023-10-27 15:14 作者:诺恒 分类: 考试
1. 水仙花
描述
判断给定的三位数是否是 水仙花 数。所谓 水仙花 数是指其值等于它本身 每位数字立方和的数。例 153 就是一个 水仙花 数。 153=13+53+33
输入描述
输入一个整数。
输出描述
是水仙花数,输出"YES",否则输出"NO"(不包括引号)
用例输入 1 | 用例输出 1 |
---|---|
123 | NO |
提示
是水仙花数,输出"YES",否则输出"NO"(不包括引号)
n = input()
m = 0;
for i in n:
m += int(i)**3
title = "NO"
if int(n) == m :
title = "YES"
print(title)
2. LQ1123 被7整除
描述
输入一个正整数N(N<100),输出1到N(包含1和N)之间所有可以被7整除的正整数,且输出的正整数之间以一个空格隔开。
输入描述
输入一个正整数N(N<100)。
输出描述
输出可以被7整除的正整数,且输出的正整数之间以一个空格隔开。
用例输入 1 | 用例输出 1 |
---|---|
15 | 7 14 |
n = input()
m = "";
for i in range(1,(int(n)+1)):
if i%7==0:
m += str(i) + " "
print(m)
3. LQ1161 判断偶数
描述
输入两个不相等的四位正整数N(1000<=N<=9999)和M(1000<=M<=9999),其中N<M,中间以一个空格隔开,输出N与M之间(包含N和M)所有的偶数且整数之间以一个空格隔开。
输入描述
在一行输入两个不相等的四位正整数N和M(N和M之间以一个空格隔开)。
输出描述
输出N与M之间(包含N和M)所有满足要求的正整数且正数之间以一个空格隔开。
用例输入 1 | 用例输出 1 |
---|---|
4000 4008 | 4000 4002 4004 4006 4008 |
提示
print(end=" “)修改print中的end参数可以将print默认的换行改为空格。
默认情况下print中的end参数的值为”\n"即print(end=”\n")
n = input()
n1 = int(n.split(" ")[0])
n2 = int(n.split(" ")[1])
for i in range(n1,n2+1): # (包含N和M)所以 M=n2+1
if i % 2 == 0: # 取模
print(i, end=" ") # 修改输出显示格式(看提示信息)
4. LQ1146 统计数字
描述
给定一个正整数N,找出3到N之间的正整数中,个位数为3的有多少个。
例如:N=25,3至25之间个位数为3的有3、13、23,一共有3个。
输入描述
输入一个正整数N(3≤N≤99993)。
输出描述
输出一个整数,表示3到N之间的正整数中,个位数为3的个数(包括3和N)。
用例输入 1 | 用例输出 1 |
---|---|
25 | 3 |
n = int(input())
m = 0 # 记录符合条件的累加
for i in range(1,n+1)):
if str(i)[-1] == "3" : # 将数值变成字符串,用 -1 的索引获取最后一位数值
m += 1
print(m)
5. 水仙花数
描述
所谓水仙花数,就是指各位数字立方之和等于该数的数;a3称为a的立方,即等于a×a×a的值。例如:因为153=13+53+33,所以153是一个水仙花数。
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
输入描述
无
输出描述
若干行,每行一个整数,表示该范围内的所有水仙花数。按从小到大的顺序输出。
for i in range(100,1000): # 从 100 开始到 999 计算水仙花数
m = 0 # 用来保存累加的值
for j in str(i): # 例如当前数值是 153 ,先将 153 变成 字符串 str 类型做循环
m += int(j)**3 # 字符串循环会将 153 拆分成 1、5、3 循环,这里就要将 对应的 字符串 转换成 整形 int 才可以进行数学运算,立方的操作,并将结果累加到m里面
if m == i: # 如果累加的 m 值 等于 当前的数值(m=153,i=153),就代表这个数是水仙花数
print(i)
# 自动打印所有 附表方式,了解即可(下例只执行了 1~4 种)
for i in range(1,5):
i1 = 10**(i-1)
i2 = 10**i-1
memo = ""
for j in range(i1, i2):
m = 0
for k in str(j):
m += int(k) ** i
if j == m:
memo += str(j) + " "
print(i, memo)
6. 百钱买百鸡
描述
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡, 其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
输入描述
(无)。
输出描述
输出可能有多行,每行3个数字,分别表示公鸡、母鸡、小鸡的购买数量。且每一行的两个数之间用一个空格分隔开。
输出格式如下:
a1 b1 c1
a2 b2 c2
…
每一行表示一种组合购买情况。
# 方法一
for a in range(1,20):
for b in range(1,33):
if 5*a+3*b+(100-a-b)/3==100 and (100-a-b)%3==0:
print (a,b,(100-a-b))
# 方法二
for i in range(1, 20):
for j in range(1,33):
for k in range(3, 99, 3):
if(i + j + k == 100 and i * 5 + j * 3 + k // 3 == 100) :
print(i, j, k)