题目描述
1、有n个物品,每个物品有k个属性,第i件物品的第j个属性用一个正整数表示记为,两个不同的物品i,j呗成为是完美对的当且仅当1≤n≤10^5,2≤k≤10,1≤≤100.
输入描述:
第一行两个数字n,k。
接下来n行,第i行k个数字表示…。
1≤n≤10^5,2≤k≤10,1≤≤100
输出描述:
一行一个数字表示答案
示例1
输入
5 3
2 11 21
19 10 1
20 11 1
6 15 24
18 27 36
输出:
3
python实现:
# 输入物品个数n,输入属性个数k
n, k = map(int, input().split(' '))
# 输入物品属性
a = []
for i in range(0, n):
m = input()
m = m.split(' ')[0:k]
a.append(m)
perfect_couple = 0
for i in range(0, n):
for j in range(i + 1, n):
# 属性遍历
sum = int(a[i][0]) + int(a[j][0])
num = 1 # 统计和相等个数
for k1 in range(1, k):
if int(a[i][k1]) + int(a[j][k1]) == sum:
num += 1
else:
break
if num == k:
perfect_couple += 1
print(perfect_couple)
2、求抛物线与直线所围成的封闭图形面积。若图行不存在,则输出0.
输入描述:
第一行输入一个正整数T,表示测试数据组数;
接下来欸行输入三个整数A,B和C;
1≤T≤1000
1≤A,B≤100
-100≤C≤100
输出描述:
每组测试数据输出一个答案,在<1e-4范围内都视为正确输出。
示例1
输入
1
1 1 -6
输出
31.2481110540
python实现:
# 输入测试数据
def x2y(x, B, C):
y = B * x + C
return y
def sarea(y_min, y_max, A):
area = float(0)
while(y_min < y_max):
d = y_min**2/2/A*0.00005
y_min += 0.00005
area += d
return area
T = int(input())
test_num = []
# T = int(T)
for i in range(0, T):
m = input().split(' ')
test_num.append(m)
for m in test_num:
A = float(m[0])
B = float(m[1])
C = float(m[2])
# 判断交点
d = -8 * A * B * C + 4 * A ** 2
if d <= 0:
print(0)
else:
# 求解交点
x1 = (2 * A - 2 * B * C + d ** 0.5) / 2 * (B ** 2)
x2 = (2 * A - 2 * B * C - d ** 0.5) / 2 * (B ** 2)
y1 = x2y(x1, B, C)
y2 = x2y(x2, B, C)
tra_area = abs((x1 + x2) * (y1 - y2) / 2)
y_max = max(y1, y2)
y_min = min(y1, y2)
area2 = abs(sarea(y_min, y_max, A))
print(tra_area - area2)
3、现在在一个监狱里,有n个房间连在一排,编号为1到n,每一个房间内都有一个人。
现在要每一个人房间的人选择一个1到m之间的数字,若相邻的房间内人选择的数字是一样的,则就会发生冲突。
现在问你有多少种情况夏是可能发生冲突的。
输入描述:
第一行用空格分隔的2个整数m和n;代表数字的范围和房间数量。
1≤n≤10^12
1≤m≤10^8
输出描述:对于每一组数据,输出一个答案表示可能冲突的方案数量,答案对100003取余。
示例1
输入:
2 3
输出:
6