文章目录
试题 基础练习 查找整数
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
count = input()
lst = list(map(int,input().split()))
num_index = int(input())
a = 0
dics = {}
for i,num in enumerate(lst,start=1):
dics[num] = i
if num_index in dics:
a = 1
print(dics[num_index])
break
if a == 0:
print('-1')
试题 基础练习 数列特征
问题描述
给出n个数,找出这n个数的最大值,最小值,和。
输入格式
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出格式
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
样例输入
5
1 3 -2 4 5
样例输出
5
-2
11
count = int(input())
lst = list(map(int,input().split()))
maxnum = max(lst)
minnum = min(lst)
sums = sum(lst)
print(maxnum)
print(minnum)
print(sums)
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
[print("{0:05b}".format(i)) for i in range(32)]
试题 基础练习 杨辉三角形
问题描述
杨辉三角形又称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
count = int(input())
n = 0
line = [1]
while n != count:
print(" ".join(str(i) for i in line))
line = [1] + [line[i] + line[i + 1] for i in range(len(line)-1)] + [1]
n +=1
试题 基础练习 特殊的数字
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行
for num in range(153,410):
temp = str(num)
if num == int(temp[0])**3 + int(temp[1])**3 + int(temp[2])**3:
print(num)
试题 基础练习 特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
num = int(input())
sums = 0
for i in range(10000,1000000):
if str(i) == str(i)[::-1]:
sums = 0
for a in str(i):
sums += int(a)
if sums == num:
print(i)
num = int(input())
sums = 0
for i in range(10000,1000000):
str_num = str(i)
if str_num == str_num[::-1]:
sums = 0
if len(str_num) == 5:
sums += (int(str_num[0])+int(str_num[1]))*2 + int(str_num[2])
if sums == num:
print(i)
if len(str_num) == 6:
sums += (int(str_num[0]) + int(str_num[1]) + int(str_num[2])) * 2
if sums == num:
print(i)
n = int(input())
my_list = []
for i in range(100,1000) :
# 如果该数字是6位数
if sum(map(int,str(i) + str(i)[::-1])) == n :
my_list.append(str(i) + str(i)[::-1])
# 如果该数字是5位数
if sum(map(int,str(i) + str(i)[:2][::-1])) == n :
my_list.append(str(i) + str(i)[:2][::-1])
for i in sorted(map(int,my_list)) : # 排序
print(i)
洛谷的题:混合牛奶
P1208 [USACO1.3]混合牛奶 Mixing Milk
由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助 Marry 乳业找到最优的牛奶采购方案。
Marry 乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天 Marry 乳业可以从奶农手中采购到小于或者等于奶农最大产量的整数数量的牛奶。
给出 Marry 乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。
注:每天所有奶农的总产量大于 Marry 乳业的需求量。
输入输出样例
输入 #1复制
100 5
5 20
9 40
3 10
8 80
6 30
输出 #1复制
630
s1 = list(map(int,input().split()))
num = s1[0]
count = 0
a = [0 for i in range(s1[1])]
for i in range(s1[1]):
a[i] = list(map(int,input().split()))
a.sort()
for i in range(s1[1]):
if num > 0:
if num < a[i][1]:
count = count + num * a[i][0]
num = 0
else:
count = count + a[i][1] * a[i][0]
num = num-a[i][1]
print(count)