【蓝桥杯入门篇】Python组刷题日寄Part02

刷题日记?刷题日寄!
萌新备战蓝桥杯python组
🌹 发现有需要纠正的地方,烦请指正!
🚀 欢迎小伙伴们的三连+关注!

往期系列:
【蓝桥杯入门篇】Python组刷题日寄Part01


入门篇02

第01题:报数问题

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
输入描述:
初始人数n
输出描述:
最后一人的初始编号
样例输入:
3
样例输出:
2


答案:

分析:
本题原型为约瑟夫环,利用其原理设计代码

n = int(input())
x = 0
for i in range(1, n+1):
    x = (x+3)%i
print(x+1)

第02题:三个字符串的排序

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
输入三个字符串,按由小到大的顺序输出
输入描述:
3行字符串
输出描述:
按照从小到大输出成3行
样例输入:
cde
afg
abc
样例输出:
abc
afg
cde


答案:

分析:
利用sort()函数

s = [0 for i in range(3)]
for i in range(3):
    s[i] = input().split()
s.sort()
for i in s:
    for j in i:
        print(j, end='')
    print()

第03题:自定义函数处理最大公约数和最小公倍数

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
输入描述:
两个数
输出描述:
最大公约数 最小公倍数
样例输入:
6 15
样例输出:
3 30


答案:

分析:

def func1(a, b):
    if a<b:
        c = a
        a = b
        b = c
    r = a%b
    while(r != 0):
        a = b
        b = r
        r = a%b
    return b

def func2(m, b):
    n = m/b
    return n

if __name__ == '__main__':
    a, b = map(int, input().split())
    m = a*b
    b = func1(a, b)
    n = func2(m, b)
    print(b, int(n))

第04题:选择排序

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
用选择法对10个整数从小到大排序。
输入描述:
输入10个无序的数字
输出描述:
排序好的10个整数
样例输入:
4 85 3 234 45 345 345 122 30 12
样例输出:
3
4
12
30
45
85
122
234
345
345


答案:

分析:
使用内置函数sort()进行排序

nums = list(map(int, input().split()))
nums.sort()
for i in nums:
    print(i)

第05题:迭代法求平方根

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
用迭代法求 平方根
公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数
输入描述:
X
输出描述:
X的平方根
样例输入:
4
样例输出:
2.000


答案:

分析:

a = int(input())
b = a/2
c = (b+a/b)/2
while abs(b-c)>=0.0001:
    b = c
    c = (b+a/b)/2
print('{:.3f}'.format(c))

第06题:完数的判断

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子
输入描述:
N
输出描述:
? its factors are ? ? ?
样例输入:
1000
样例输出:
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248


答案:

分析:

from math import sqrt
n = int(input())
for i in range(2, n):
    l = [1]
    a = 1
    for j in range(2, int(sqrt(i))+1):
        if a>i:
            break
        else:
            if i%j==0:
                l.append(j)
                l.append(int(i/j))
                a = a+j+int(i/j)
    if a==i:
        print(i, 'its factors are', ' '.join(str(k) for k in sorted(set(l))))

第07题:阶乘求和

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
输入描述:
n
输出描述:
Sn的值
样例输入:
5
样例输出:
153


答案:

分析:

n=int(input())
s=1
Sn=0
for i in range(1,n+1):
    s=s*i
    Sn=Sn+s
print(Sn)

第08题:最长单词

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
编写一个函数,输入一行字符,将此字符串中最长的单词输出。
输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。
输入描述:

输出描述:

样例输入:
I am a student
样例输出:
student


答案:

分析:

L=[i for i in input().split()]
m=''
for i in L:
    if len(i)>len(m):
        m=i
print(m)

第09题:数字黑洞

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:

  1. 将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
  2. 将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
  3. 求两个数的差,得到一个新的四位数(高位零保留)。

重复以上过程,最后一定会得到的结果是6174。
比如:4312 3087 8352 6174,经过三次变换,得到6174
输入描述:
一个四位整数,输入保证四位数字不全相同
输出描述:
一个整数,表示这个数字经过多少次变换能得到6174
样例输入:
4312
样例输出:
3


答案:

分析:

num = int(input())
count = 0
while num != 6174:
    nums = []
    count += 1
    #将四位数分开并排序
    for i in str(num):
        nums.append(int(i))
    nums = sorted(nums)
    #生成四位数能组成的最大值最小值
    max = ''
    min = ''
    for i in nums:
        max = str(i)+max  #新学的方法
        min = min+str(i)
    #求max和min的差
    max = int(max)
    min = int(min)
    num = max - min
#输出
print(count)

第10题:寻找三位数

题目:
时间限制:
1s
内存限制:
128MB
题目描述:
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成
1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。
输入描述:

输出描述:
输出每行有三个数,为满足题设三位数。各行为满足要求的不同解。
样例输入:

样例输出:


答案:

分析:
从最小数的取值范围入手:
下界:123(能组成最小的数)
上界:334(能组成最大的数不超过1000)

def main():
	for i in range(123, 334):
    a, b, c=list(str(i)), list(str(i*2)), list(str(i*3))
    if len(set(a+b+c))==9 and '0' not in a+b+c:
        print(i, i*2, i*3)

if __name__=="__main__":
    main()


版权声明:本文为qq_60090693原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>