蓝桥杯基础试题汇总(Python)看这一篇就够了

目录

蓝桥杯习题汇总

1 试题 基础练习 A+B问题

2 数列问题

3 试题 基础练习 十六进制转八进制

4 试题 基础练习 十六进制转十进制

5 试题 基础练习 十进制转十六进制

6 试题 基础练习 序列求和

7 试题 基础练习 圆的面积

8 试题 基础练习 Fibonacci数列

9 试题 基础练习 闰年判断

10 试题 基础练习 01字串

11 试题 基础练习 字母图形

12 试题 基础练习 数列特征

13 试题 基础练习 查找整数

14 试题 基础练习 杨辉三角形

15 试题 基础练习 特殊的数字

16 试题 基础练习 回文数

17 试题 基础练习 特殊回文数


蓝桥杯习题汇总

我在这里我要谴责一下很多作者,为了搏主完全不顾代码能不能运行,或者只按照自己的思路来写,不管是否能否通过测试,我们大家平时就是自己不能突破关键点,来参考你的思路,然后某些博主给的错误代码,让我们跑偏,反倒饶了更大的路。

我实在是气不过,我先更新蓝桥杯基础的试题,后续我会慢慢更新算法训练和算法提高。

我保证我下面的代码都是可以通过蓝桥杯测试并且是100分,更多的是给大家一个思路来去写代码。

1 试题 基础练习 A+B问题

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

输入A、B,输出A+B。

输入格式

输入的第一行包括两个整数,由空格分隔,分别表示A、B。

输出格式

输出一行,包括一个整数,表示A+B的值。

样例输入

12 45

样例输出

57

数据规模与约定

-10000 <= A, B <= 10000。

 a,b = map(int,input().split())
 print(a+b)

2 数列问题

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

输入格式

  第一行为一个整数n。   第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

输出格式

  输出一行,按从小到大的顺序输出排序后的数列。

样例输入

5 8 3 6 4 9

样例输出

3 4 6 8 9

 # 方法一
 n = int(input())
 li = list(map(int,input().split()))
 li.sort()
 for i in li:
     print(i,end=" ")
 # 方法二
 n = int(input())
 li = list(map(int,input().split()))
 li.sort()
 for i in li:
     if n == 1:
         print("",end=str(i))
         break
         pass
     print(str(i),end=" ")
     n -= 1

3 试题 基础练习 十六进制转八进制

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。

输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式   输出n行,每行为输入对应的八进制正整数。

  【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八进制数也不能有前导0。

样例输入   2   39   123ABC

样例输出   71   4435274

  【提示】   先将十六进制数转换成某进制数,再由某进制数转换成八进制。

 n = int(input())
 li = []
 for i in range(n):
     if n <= 10:
         he = input()
         if len(he) <= 100000:
             re_1 = int(he,16)
             re_2 = oct(re_1)
             li.append(re_2[2:])
 for i in li:
     print(i,end="\n")

4 试题 基础练习 十六进制转十进制

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

 # 方法一
 re = int(input(),16)
 print(re)
 # 方法二
 n=input()
 print(int(n,16))

5 试题 基础练习 十进制转十六进制

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。   给出一个非负整数,将它表示成十六进制的形式。

输入格式

  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

输出格式

  输出这个整数的16进制表示

样例输入

30

样例输出

1E

 s = int(input())
 res = hex(s).upper() # 十进制转换十六进制,将小写转换为大写
 print(res[2:]) # 去除十六进制开头Oo

6 试题 基础练习 序列求和

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

求1+2+3+...+n的值。

输入格式

输入包括一个整数n。

输出格式

输出一行,包括一个整数,表示1+2+3+...+n的值。

样例输入

4

样例输出

10

 # 运行超时
 n = int(input())
 res = 0
 for i in range(n+1):
     res += i
     pass
 print(res)
# 正常运行
 n = int(input())
 # res = n * (n+1) / 2
 res = n + n*(n-1)/2
 print(int(res))

7 试题 基础练习 圆的面积

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

给定圆的半径r,求圆的面积。

输入格式

输入包含一个整数r,表示圆的半径。

输出格式

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

 # 方法一
 r = int(input())
 pi = 3.14159265358979323
 s = pi * r * r
 print("%.7f"%s) # 小数位7个采用.7f
 # 方法二
 import math
 r = int(input())
 s = math.pi * r * r
 print("%.7f"%s)

8 试题 基础练习 Fibonacci数列

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

输入格式

输入包含一个整数n。

输出格式

输出一行,包含一个整数,表示F

n

除以10007的余数。

说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

样例输入

10

样例输出

55

样例输入

22

样例输出

7704

数据规模与约定

1 <= n <= 1,000,000。

 n = int(input())
 def fibo(n):
     a, b = 1, 1
     for i in range(2, n+1):
         a, b = b, (a+b)%10007
     return a
 print(fibo(n))

9 试题 基础练习 闰年判断

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年:

\1. 年份是4的倍数而不是100的倍数;

\2. 年份是400的倍数。

其他的年份都不是闰年。

输入格式

输入包含一个整数y,表示当前的年份。

输出格式

输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。

样例输入

2013

样例输出

no

样例输入

2016

样例输出

yes

数据规模与约定

1990 <= y <= 2050。

 n = int(input())
 if n % 4 == 0 and not n % 100 == 0 or n % 400 == 0:
     print("yes")
 else:
     print("no")

10 试题 基础练习 01字串

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式

本试题没有输入。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出

00000 00001 00010 00011 <以下部分省略>

 # 这种方法可以完成题目要求,但是由于开始使1 10,不满足六位数字
 for i in range(32):
     res = bin(i)
     print(res[2:])
 # 后来在网上找循环字符串的方法,结果显示正确
 for a in range(0,2):
     for b in range(0, 2):
         for c in range(0, 2):
             for d in range(0, 2):
                 for e in range(0, 2):
                     print(a,b,c,d,e,sep="")

11 试题 基础练习 字母图形

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC

数据规模与约定

1 <= n, m <= 26。

 # 方法一 切片
 def aiphabet_graphics(n,m):
     letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     for i in range(n):
         res_1 = letter[1:i+1]
         res_2 = letter[0:m+1]
         res = res_1[::-1] + res_2
         print(res[0:m])
         pass
     pass
 n,m = map(int,input().split())
 aiphabet_graphics(n,m)
 # 方法二 循环
 n,m = map(int,input().split())
 if(n>=1 and m<=26):
     for i in range(n):
         k,t1,t2=i,0,1
         for j in range(m):
             if (k<=i and k>=0):
                 print(chr(65+i-t1),end='')
                 t1,k=t1+1,k-1
             else:
                 print(chr(65+t2),end='')
                 t2=t2+1
         print("")
 ​

12 试题 基础练习 数列特征

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

输入格式

第一行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

样例输入

5 1 3 -2 4 5

样例输出

5 -2 11

数据规模与约定

1 <= n <= 10000。

 n = int(input())
 li = list(map(int,input().split()))
 print(max(li)) # 最大值
 print(min(li)) # 最小值
 print(sum(li)) # 求和函数

13 试题 基础练习 查找整数

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6 1 9 4 8 3 9 9

样例输出

2

数据规模与约定

1 <= n <= 1000。

 n = int(input())
 li = list(map(int,input().split()))
 a = int(input())
 for i in li:
     if i == a:
         print(li.index(a)+1)
         break
 else:
     print("-1")

14 试题 基础练习 杨辉三角形

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

1

1 1

1 2 1

1 3 3 1

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1 1 1 1 2 1 1 3 3 1

数据规模与约定

1 <= n <= 34。

 a=int(input())
 num=[]
 nums=[1]
 for x in range(a):
     for z in range(x+1):
         if z==0 or z==x:
             num.append(1)
         else:
             num.append(nums[z-1]+nums[z])
     [print(i,end=" ") for i in num]
     print()
     nums=[]
     [nums.append(i) for i in num]
     num=[]

15 试题 基础练习 特殊的数字

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。

输出格式

  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

 li = []
 for a in range(0,10):
     for b in range(0, 10):
         for c in range(0, 10):
             res = a+b*10+c*100
             if a**3+b**3+c**3 == res:
                 li.append(res)
 li.sort()
 for i in li:
     if i > 1:
         print(i)

16 试题 基础练习 回文数

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

  按从小到大的顺序输出满足条件的四位十进制数。

 li = []
 for a in range(0,10):
     for b in range(0, 10):
         for c in range(0, 10):
             for d in range(0, 10):
                 res = a+b*10+b*100+d*1000
                 if d+c*10+b*100+a*1000 == res:
                     li.append(res)
 li.sort() # 可以不排序,因为是按照从小到大的顺序添加的
 for i in li:
     if i > 1000:
         print(i)

17 试题 基础练习 特殊回文数

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998 989989 998899

数据规模和约定

  1<=n<=54。

 def replies(a):
     for z in range(10000,1000000):
         z=str(z)
         if z == z[::-1]:
             if a==sum(int(i) for i in list(z)):
                 print(z)
 x=int(input())
 replies(x)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

英语渣i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值