输入描述:(输入格式输入包含一个整数n)
n
输出描述:(输出格式输出一行,包含一个整数)
表示Fn除以10007的余数
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 数据规模与约定1 <= n <= 1,000,000。
# 1.1 Fibonacci数列
n = int(input("输入包含一个整数:"))
# n = 10
fib = [1 for i in range(n+1)]
k = 3
while k <= n:
fib[k] = (fib[k-1] +fib[k-2]) % 10007
k += 1
print("第", n, "的数列除以10007余数为", fib[n])
输入描述:(输入包含一个整数r)
表示圆的半径 如:
4
输出描述:(输出一行包含一个实数,四舍五入保留小数点后7位)
表示圆的面积 如:
50.2654825
数据规模与约定: 1 <= r <= 10000
# 1.2 圆的面积
import math
r = int(input("输入圆的半径:"))
s = math.pi * r * r
print("{:.7f}".format(s))
输入描述:(输入包含一个整数n)
4
输出描述:(输出一行包括一个整数,表示1+2+3+…+n的值)
10
数据规模与约定: 1 <=n <= 1,000,000,000
# 1.3 序列求和
n = int(input("输入一个整数: "))
s = n * (n + 1) / 2 # 等差数列公式
print("序列和为: %d" %s)
输入描述:(输入的第一行包括两个整数,由空格分隔,分别表示A、B)
12 45
输出描述:(输出一行包括一个整数,表示表示A+B的值)
57
数据规模与约定: -10000 <= A, B <= 10000
# 1.4 A+B问题
#只适用于数据规模较小的情况下。若过大,则通过大数加法计算
a, b = map(int, input("输入两个整数").split())
print(a+b)
输入描述:
(第一行为一个整数n)
(第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000)
5
8 3 6 4 9
输出描述:(输出一行,按从小到大的顺序输出排序后的数列)
3 4 6 8 9
# 2.1 数列排序 (即输入的第二行整数以空格间隔)
# 方法一:
n = int(input("输入数列长度: "))
num = list(map(int, input("输入待排序整数,整数的绝对值小于10000:").split()))
num.sort() #None是不可迭代的 或者sorted(num)
print(" ".join("{:d}".format(i) for i in num ))
# 方法二:
num = input("输入待排序整数,整数的绝对值小于10000:").split()
num = sorted(num) #list类型
print(" ".join(num[:n]))
输入描述:
(输入的第一行为一个正整数n(1<=n<=10))
(接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000)
2
39
123ABC
输出描述:(输出n行,每行为输入对应的八进制正整数)
71
4435274
【注意】输入的十六进制数不会有前导0,比如012A
输出的八进制数也不能有前导0
n = int(input("输入需转换的行数: "))
for i in range(1,n+1):
print("第", i, "行")
m = input("输入十六进制正整数: ")
ans = format(int(m, 16), 'o')
print(ans)
#十六进制转二进制
ans = format(int(m, 16), 'b')
输入描述:
FFFF
输出描述:
65535
#十六进制转十进制
print(int(input("输入十六进制正整数: "), 16))
输入描述: (输入包含一个非负整数a,表示要转换的数,0<=a<=2147483647)
30
输出描述:(输出这个整数的16进制表示)
1E
#十进制转十六进制
print(format(int(input("输入十进制正整数: ")), 'X'))
输入描述:(输入的第一行包含一个正整数n)
52
输出描述:(输出按从小到大的顺序输出满足条件的整数,每个整数占一行)
899998
989989
998899
数据规模与约定: 1<=n<=54
# 2.3 特殊回文数
#方法一:
n = int(input("输入需得到回文数之和的整数: "))
#先判断是否为回文数 (方法一:特点按顺序:从10000,10001,10002,...,999999)
for i in range(10000, 1000000):
num_pd = str(i) #回文数
if num_pd == num_pd[::-1]:
sum_pd = 0
#在单独求各个 位数字之和
for j in num_pd:
sum_pd += int(j)
if sum_pd == n:
print(num_pd)
#方法二:按照回文数顺序遍历,如:10001,20002,...,999999)
my_list = []
for i in range(100, 1000):
num_pd_half = str(i) #回文数的前半部分,复制,对称处理 ,从而减少运算
#回文数是五位数
if sum(map(int, num_pd_half + num_pd_half[:2][::-1])) == n: #三位数 + 三位数的前2位数 倒序
my_list.append(num_pd_half + num_pd_half[::-1])
#回文数是六位数
if sum(map(int, num_pd_half + num_pd_half[::-1])) == n: #三位数 + 三位数的倒序
my_list.append(num_pd_half + num_pd_half[::-1])
for i in sorted(map(int, my_list)):
print(i)
#方法三:
# ***** 绝绝子方法 *****
n = int(input())
for i in range(10000, 1000000):
num_pd = str(i) #可能出现的回文数
#符合正序与倒序相等,同时将字符串以 + 分割并以eval()转化为表达式进行求值
if num_pd == num_pd[::-1] and eval('+'.join(num_pd)) == n:
#eval:***转化为有效的表达式 或 complie函数的代码对象(其可以创建函数compile(表达式,'','编译代码'))
print(i)
#输出四位数的回文
# import time
# start = time.time()
num_list = []
for i in range(10, 101): #两位数
num_list.append(str(i) + str(i)[::-1]) #两位数 + 两位数的倒序
for l in map(int, num_list):
print(l)
# print(time.time()-start)
输出描述:(按从小到大的顺序输出满足条件的三位十进制数,每个数占一行)
# 2.4 水仙花数
for i in range(100, 1000):
# 个位十位百位数 各个立方,相加之和
num_sum = int(str(i)[0]) ** 3 + int(str(i)[1]) ** 3 + int(str(i)[2]) ** 3
if num_sum == i:
print(i)
输入描述:(输入包含一个数n)
4
输出描述:(输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格)
1
1 1
1 2 1
1 3 3 1
数据规模与约定: 1 <= n <= 34
# 2.5 杨辉三角
n = int(input("输入行数:"))
old_line = [1] #打印第一列 1
print(' '.join(str(i) for i in old_line))
for i in range(1, n): #打印第一列之后,第二列开始(从[1,1]开始)
new_line = [] #创建新列表
for j in range(len(old_line)-1): #打印第二列之后,第三列开始(从[1,2,1]开始)
new_line.append(old_line[j] + old_line[j+1]) #添加的数据,(从[1]+[1]: 1+1 = 2开始)
# 添加新列表中的参数 *表示:将列表解开成多个独立的参数
new_line = [1, *new_line, 1]
print(' '.join(str(i) for i in new_line))
输入描述:
(第一行包含一个整数n)
(第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000)
(第三行包含一个整数a,为待查找的数)
6
1 9 4 8 3 9
9
输出描述:(输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格)
2
数据规模与约定: 1 <= n <= 1000
# 2.6 查找整数, 输入含有n个整数的数列a,搜索整数m在a数列中的数量
n = int(input("输入数列中整数的数量: "))
a = input("输入数列: ").split()
m = input("输入待查的整数: ")
num = 0
##方法缺n值
for j in range(n):
if a[j] == str(m): #按顺序搜索数列中的整数
num += 1
if num == 0:
print(-1)
else:
print("出现的次数为: ", num)
输入描述:
(第一行为整数n,表示数的个数)
(第二行有n个数,为给定的n个数,每个数的绝对值都小于10000)
5
1 3 -2 4 5
输出描述:(输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和)
5
-2
11
数据规模与约定: 1 <= n <= 1000
# 2.7 数列特征
n = int(input("输入整数的个数: "))
m = input("输入数列: ").split()
# max(),min()函数,对于列表取最大/小的数字,
# 对于字符串取最大/小的字母(如:"1,2,3" --> 逗号最小), 其他的与字符串同理
if n == len(m):
print("最大数值为:", max(m)) #求最大数值
print("最小数值为:", min(m)) #求最小数值
print("最小值为:", eval("+".join(m))) #求和
输入描述:(输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数)
5 7
输出描述:(输出n行,每个m个字符,为你的图形)
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定: 1 <= n, m <= 26
# 2.8 字母图形
try:
n, m = map(int, input("请输入需输出的行数 、列数: ").split())
letter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
output = letter[:m] #初始为m列的第一行列表
for i in range(1, n+1):
print(output)
output = letter[i] + output[:-1] #重新赋值第二列列表之后的数列
#为字母表第n个为字母列的首字母 + 前一行除最后一位数的字母列
except:
pass
输出描述:(输出32行,按从小到大的顺序每行一个长度为5的01串)
00000
00001
00010
00011
数据规模与约定: 1 <= n, m <= 26
# 2.9 字串01
for i in range(32):
print("{:0>5}".format(format(i, 'b')))
输入描述:(输入包含一个整数y,表示当前的年份)
2013
2016
输出描述:(输出一行,如果给定的年份是闰年,则输出yes,否则输出no)
no
yes
数据规模与约定: 1990 <= y <= 2050
# 2.10 闰年判断
n = int(input("输入年份: "))
if n % 4 == 0 and n % 100 != 0 or n % 400 == 0:
print("yes")
else:
print("no")
[1]: 试题题目部分来自于 https://blog.csdn.net/qq_31910669