蓝桥杯-练习题目

1.题目1:输入A、B,输出A+B。

#input: 12 45
#output:57

c = input().split() #将输入以空格为分隔符返回一个字符串列表
a,b = map(int,c)
sum1 = a + b
print(sum1)
求和

2.题目2:求1+2+3+...+n的值。

#input:4
#output:10
print(sum(range(1,int(input()) + 1)))
求和

3.题目3:给定圆的半径r,求圆的面积。

#input:4
#output:50.2654825

import math
print(round(math.pi*float(input())**2,7))
求圆的面积

4.题目4:

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

当n比较大时,Fn也很是大,如今咱们想知道,Fn除以10007的余数是多少。api

#input:10
#output:55
import numpy as np
n = int(input())
a = np.zeros((1,n),dtype = "int")
a[0][0] = 1

for i in range(1,n):
    a[0][i] = a[0][i-1] + a[0][i-2]
print(a[0][n-1]%10007)

'''
def fei(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fei(n-1)%10007 + fei (n-2)%10007

n = int(input())#项数
print(fei(n))
'''
Fibonacci

5.题目5:

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

当如下状况之一知足时,这一年是闰年:ide

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

2. 年份是400的倍数。ui

其余的年份都不是闰年。spa

#input:2013
#output:no

year = int(input())
if (year>=1990 and year<=2050) and (year%400 == 0 or (year%4 == 0 and year%100 !=0)):
    print("yes")
elif year<1990 or year>2050:
    print("输入错误")
else:
    print("no")
闰年判断

6.题目6:

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

00000orm

00001blog

00010

00011

00100

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

for i in range(32):
    print("{:05b}".format(i,'b'))
5位2进制

7.题目7:

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

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

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

#input:5 7
#output:
'''
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
'''
m, n = map(int, input().split())
letters = ''
# 1.产生全部字母
for i in range(26):
    letters += chr(ord("A") + i)

# 2. 产生第一行代码
x = letters[:n]
for i in range(1,m+1):
    try:
        print(x)
        x = letters[i] + x[0:n-1]
    except:
        pass

'''
try:
    n, m = map(int, input().split())
    letter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    x = letter[:m]
    for i in range(1, n + 1):
        print(x)
        x = letter[i] + x[0:-1]
except:
    pass

#本文版权归做者和博客园共有,来源网址:https://www.cnblogs.com/xiaolan-Lin 欢迎各位转载,
#未经做者本人赞成转载文章时,必须在文章页面明显位置给出做者和原文链接,不然保留追究法律责任的权利!

'''


'''
import numpy as np
m,n = map(int,input().split())

#输入原始矩阵
mx = np.ones((m,n),dtype="str")
print(mx)

#产生全部字母的列表
letters = []
for i in range(26):
    letters.append(chr(ord("A") + i))
# print(ord("A"))#65 某个字符串对应的ascii码;chr ascii码转字符串
'''
字母图形

8.题目8:

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

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

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

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

#input:5
#         1 3 -2 4 5
#output:
#5
#-2
#11

# 给出n个数,找出这n个数的最大值,最小值,和。
n = int(input()) #几个数
a = input().split() #注意不能直接将列表转换类型
a = [int(i) for i in a]

#>>> input().split()
#4 5 6
#['4', '5', '6']
#>>>

print(max(a))
print(min(a))
print(sum(a))
数列特征

 9.题目9:

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

第一行包含一个整数n。

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

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

若是a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),不然输出-1。

#input:
#6
#1 9 4 8 3 9
#9
#output:
#2

n = int(input()) # 几个数
a = input().split() 
a = [int(i) for i in a] # 输入的列表
b = int(input()) # 待查找的数
try:
    print(a.index(b) + 1) #待查找数的下标,加一表明位置
except:
    print(-1)
列表查找

10.题目10:

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

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

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

1 

1 1  

1 2 1 

1 3 3 1

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

#input:4
#output:
#1
#1 1
#1 2 1
#1 3 3 1

#思想:列表相加 + 观察
n = int(input())

def yanghui(p):
    p = [1] +  [p[i] + p[i+1] for i in range(len(p) - 1)] + [1]
    return p

#1.将每一行输出一个列表
p = [1]
#print(p)
p_s = []
for i in range(n):
    p_s.append(p)
    p = yanghui(p)
    #p.append(0) #增长一个元素,由于下一行比上一行多一个,#不用了,上面p迭代呢
    #print(p)

#2.输出
for i in p_s:
    #print(i)
    #将列表元素这样输出:1 3 3 1
    for j in i:
        print(j,end=' ')
    print("\t") #回车不换行
杨辉三角

11.题目11:

153是一个很是特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求全部知足这种条件的三位十进制数。

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

#153是一个很是特殊的数,它等于它的每位数字的立方和,
#即153=1*1*1+5*5*5+3*3*3。编程求全部知足这种条件的三位十进制数。

for i in range(100,1000):
    gewei = i%10
    shiwei = (i//10)%10
    baiwei = (i//100)%10
    if i == gewei**3 + shiwei**3 + baiwei**3:
        print(i)
特殊数字

12.题目12:

1221是一个很是特殊的数,它从左边读和从右边读是同样的,编程求全部这样的四位十进制数。

#按从小到大的顺序输出知足条件的四位十进制数。
for i in range(10000):
    gewei = i%10
    shiwei = (i//10)%10
    baiwei = (i//100)%10
    qianwei = (i//1000)%10
    if qianwei == 0:
        continue   
    elif gewei == qianwei and shiwei == baiwei:
        print(i)
        
回文数

13.题目13:

123321是一个很是特殊的数,它从左边读和从右边读是同样的。
输入一个正整数n, 编程求全部这样的五位和六位十进制数,知足各位数字之和等于n 。

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

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

#input:52
#output:
#899998
#989989
#998899

num1 = int(input())

for i in range(10000,999999):
    gewei = i%10
    shiwei = (i//10)%10
    baiwei = (i//100)%10
    qianwei = (i//1000)%10
    wanwei = (i//10000)%10
    shiwanwei = (i//100000)%10

    sum1 = gewei + shiwei + baiwei + qianwei + wanwei + shiwanwei
    tiaojian1 = (shiwanwei==0 and wanwei==gewei and shiwei==qianwei and num1==sum1)#5位数
    tiaojian2 = (shiwanwei==gewei and shiwei==wanwei and baiwei==qianwei and num1==sum1)#6位数
    if tiaojian1 or tiaojian2:
        print(i,end=" ")
        print("\t")
特殊回文数

14.题目14:

(1)给出一个非负整数,将它表示成十六进制的形式。

(2)从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

(3)给定n个十六进制正整数,输出它们对应的八进制数。

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

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

#给出一个非负整数,将它表示成十六进制的形式。
#10进制转16进制:hex(n)  将10进制整数转换成16进制,以字符串形式表示。
#10进制转8进制oct(n)
#10进制转二进制:bin(n)
#8进制转16进制:hex(int(n,8))
#8进制转换成10进制:int(n,8)
#8进制转换成2进制:bin(int(n,8))
#2进制转换成16进制:hex(int(n,2))
#2进制转换成8进制:oct(int(n,2))
#2进制转换成10进制:int(n,2)

#30 1E 10进制转16进制
#n = int(input())
#s = hex(n)[2:]
#print(s.upper()) 

'''
str = "www.runoob.com"
print(str.upper())          # 把全部字符中的小写字母转换成大写字母
print(str.lower())          # 把全部字符中的大写字母转换成小写字母
print(str.capitalize())     # 把第一个字母转化为大写字母,其他小写
print(str.title())          # 把每一个单词的第一个字母转化为大写,其他小写 
'''

#16进制转10进制 FFFF 65535
#a = input() 
#a = '0x' + a
#print(int(a,16)) #注意:int最终输出为10进制

#16进制转8进制
n = int(input()) #想要转换的数的个数
l1 = [] #存储要输出的转换后的8进制字符串
for i in range(n):
    a = input() #接收转换的数
    a = '0x' + a
    b = int(a,16) #16进制对应的10进制数
    s = oct(b)[2:]
    l1.append(s)

#输出:
for i in l1:
    print(i)
进制转换

15.问题15(这个的知道内存的知识):

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

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

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

5
8 3 6 4 9

3 4 6 8 9

n = int(input()) #列表的长度
l1 = input().split()#接收传入的数字,转为列表
l1 = [int(i) for i in l1]
#print(l1)
#list.sort(cmp=None, key=None, reverse=False)
'''
l1ed = l1.sort()
print(id(l1ed),id(l1.sort()),id(l1))
print(l1ed)
#这块的话:l1ed指向那个l1排序后的那个空间,
#而sort的话是在原内存上面进行的,那边是空的

#list 的 sort 方法返回的是对已经存在的列表进行操做,而内建函数 sorted 方法返回的是一个新的 list,
#而不是在原来的基础上进行的操做。
'''
l1.sort()

for i in l1:
    print(i,end = ' ')
数列排序
相关文章
相关标签/搜索