问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
#encoding:utf-8
def ex1():
n=int(input()) #n对此题无实质作用
my_list = sorted(list(map(int,input().split())))
for i in my_list:
print(i,' ',end='')
ex1()
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
#encoding:utf-8
def ex1():
for i in range(0,32):
print(bin(i)[2:].zfill(5))
ex1()
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
年份是4的倍数而不是100的倍数;
年份是400的倍数。
其他的年份都不是闰年。
#encoding:utf-8
def ex1(y):
if 1990 <= y <= 2050:
if y % 4 == 0 and y % 100 != 0 or y % 400 == 0:
return 'yes'
else:
return 'no'
else:
pass
print(ex1(int(input())))
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
错误示范:列表转字符串后用find函数
#encoding:utf-8
def ex1(n):
if 1<= n <= 1000:
my_list = input().split()
my_str =''.join(my_list)
num = input()
indx = my_str.find(num)
if indx != -1:
return indx+1
else:
return -1
else:
pass
print(ex1(int(input())))
Consequence:
3其实不在输入元素中,依然被找到,且索引无意义.
5
1 22 33 11 4
3
4
正确答案:
#encoding:utf-8
def ex1(n):
if 1<= n <= 1000:
my_list = list(map(int, input().split()))
num = int(input())
if num in my_list:
return (int(my_list.index(num)+1))
else:
return -1
else:
pass
print(ex1(int(input())))
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即
153= 1x1x1+5x5x5+3x3x3。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
正确答案:
#encoding:utf-8
def ex1():
for i in range(0,10):
nums = i
for j in range(0,10):
nums = int(''.join([str(i),str(j)]))
for k in range(0,10):
nums = int(''.join([str(i),str(j),str(k)]))
numb = list(str(nums))
if len(numb) == 3:
if nums == int(numb[0]) * int(numb[0]) * int(numb[0]) + int(numb[1]) * int(numb[1]) * int(numb[1]) + int(numb[2]) * int(numb[2]) * int(numb[2]):
print(nums)
ex1()
补充:0-999之间的所有数
#encoding:utf-8
def ex1():
for i in range(0,10):
nums = i
for j in range(0,10):
nums = int(''.join([str(i),str(j)]))
for k in range(0,10):
nums = int(''.join([str(i),str(j),str(k)]))
numb = list(str(nums))
if len(numb) == 1:
if nums == int(numb[0]) * int(numb[0]) * int(numb[0]):
print('%03d'%nums)
elif len(numb) == 2:
if nums == int(numb[0]) * int(numb[0]) * int(numb[0]) + int(numb[1]) * int(numb[1]) * int(numb[1]):
print('%03d'%nums)
else:
if nums == int(numb[0]) * int(numb[0]) * int(numb[0]) + int(numb[1]) * int(numb[1]) * int(numb[1]) + int(numb[2]) * int(numb[2]) * int(numb[2]):
print(nums)
ex1()
其他参考答案:
for num in range(100, 1000):
bai = (num // 100) * (num // 100) * (num // 100)
shi = (num % 100 // 10) * (num % 100 // 10) * (num % 100 // 10)
ge = (num % 100 % 10) * (num % 100 % 10) * (num % 100 % 10)
if bai + shi + ge == num:
print(num)
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
按从小到大的顺序输出满足条件的四位十进制数。
#encoding:utf-8
def ex1():
for i in range(0,10):
nums = i
for j in range(0,10):
nums = int(''.join([str(i),str(j)]))
for k in range(0,10):
nums = int(''.join([str(i), str(j), str(k)]))
for l in range(0,10):
nums = int(''.join([str(i), str(j), str(k), str(l)]))
numb = list(str(nums))
if len(numb) == 4:
if numb[0:4] == numb[::-1]:
print(nums)
ex1()
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
错误示范:继续forforforfor循环~没学过数据结构与算法的呆毛通信人就是这么硬气!
#encoding:utf-8
def ex1(n):
if 1<=n<=54:
for i in range(0,10):
nums = i
for j in range(0,10):
nums = int(''.join([str(i),str(j)]))
for k in range(0,10):
nums = int(''.join([str(i), str(j), str(k)]))
for l in range(0,10):
nums = int(''.join([str(i), str(j), str(k), str(l)]))
for m in range(0, 10):
nums = int(''.join([str(i), str(j), str(k), str(l), str(m)]))
numb = list(map(int,list(str(nums))))
if len(numb) == 5:
if numb[0:6] == numb[::-1] and sum(numb) == n:
print(nums)
for t in range(0, 10):
nums = int(''.join([str(i), str(j), str(k), str(l), str(m), str(t)]))
numb = list(map(int,list(str(nums))))
if len(numb) == 6:
if numb[0:7] == numb[::-1] and sum(numb) == n:
print(nums)
ex1(int(input()))
答案倒是对了,
第一项测试数据就超时,一分不得!
正确参考答案:
n = int(input())
for num in range(10000, 1000000):
temp = str(num)
if temp[0:] == temp[::-1]:
#判断是否是回文数
if sum(list(map(int, temp))) == n:
print(num)
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
(温故知新:高阶导数多项式系数其实就是杨辉三角,考研数学要考哦~)
参考答案:
n = int(input(''))
arr = []
for i in range(n):
arr.append([])
for j in range(i+1):
if j == 0 or i == j:
arr[i].append(1)
else:
arr[i].append(arr[i-1][j-1] + arr[i-1][j])
print(" ".join(str(a) for a in arr[i]))
问题描述
给出n个数,找出这n个数的最大值,最小值,和。
def ex(n):
if 1 <= n <= 10000:
my_list = list(map(int,input().split()))
print(max(my_list))
print(min(my_list))
print(sum(my_list))
ex(int(input()))
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
def ex(n):
num = list(range(n))
for i in range(n):
num[i] = input()
for i in range(n):
print(oct(int(num[i],16))[2:])
ex(int(input()))
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
def ex():
num = input()
print(int(num,16))
ex()
def ex(num):
if 0<=num<=2147483647:
print(hex(num)[2:].upper())
else:
pass
ex(int(input()))
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
参考答案:
i,j = map(int,input().split())
k=[[]]*i
lst=[None] * 26
f=0
for n in range(i):
k[n] = [None] * j
if n==0:
for m in range(26):
s=m+65
l=s if s<=90 else s-25
if m<j:
k[0][m]=chr(l)
lst[m]=chr(l)
if n>0:
k[n]=k[0]
k[n].reverse()
k[n].append(lst[n])
k[n].reverse()
k[n].pop(-1)
f+=1
print("".join(k[n]))