矩形面积交
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。 对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入 输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。 输出 输出仅包含一个实数,为交的面积,保留到小数后两位。 样例输入 1 1 3 3 2 2 4 4 样例输出 1.00
'''解题思路:由于题目中所给的一对点我们并不知道是做对角线的点还是右对角线的点,
也不知道是先给的是左下角的点还是右上角的点(以左对角线为例)。
因此我们需要先将点的位置确定,接下来就好计算了。
①根据所给的一堆点,我们可以确定(min(x1,x2),min(y1,y2))一定是左下角的点,
(max(x1,x2),max(y1,y2))一定是右上角的点。
②重新确定完点的坐标之后,我们知道,如果两个矩形有重合,那么需要满足
第一个矩形左下角的点一定小于第二个矩形右上角的点,
第一个矩形右上角的点一定大于第二个矩形左下角的点。
③若②满足情况,
将四个点的x坐标从小到大排序sort(x11,x12,x21,x22)
将四个点的y坐标从小到大排序sort(y11,y12,y21,y22)
④相交面积 = 排序后x中间的两个点的差值 * 排序后y中间两个点的差值'''
m = list(map(float,input().split()))
n = list(map(float,input().split()))
a = [min(m[0],m[2]),min(m[1],m[3]),max(m[0],m[2]),max(m[1],m[3])]
b = [min(n[0],n[2]),min(n[1],n[3]),max(n[0],n[2]),max(n[1],n[3])]
if(a[0]<b[2] and a[1]<b[3]) and (b[0]<a[2] and b[1]<a[3]):
x = a[::2]+b[::2]
y = a[1::2]+b[1::2]
x.sort()
y.sort()
xd = x[2] - x[1]
yd = y[2] - y[1]
area = xd * yd
else:
area = 0
print('{:.2f}'.format(area))
分解质因数
求出区间[a,b]中所有整数的质因数分解。 提示 先筛出所有素数,然后再分解。
输入 输入两个整数a,b。 2< =a< =b< =10000 输出 每行输出一个数的分解,形如k=a1a2a3…(a1< =a2< =a3…,k也是从小到大的)(具体可看样例)
样例输入 3 10 样例输出 3=3 4=22 5=5 6=23 7=7 8=222 9=33 10=25
n,m = map(int,input().split())
listS = []
for i in range(n,m+1):
flag = True
for j in range(2,i):
if j % i != 0:
flag = False
break
if flag:
listS.append(i)
def fun(i):
if i in listS:
return i
else:
return fun2(i)
def fun2(i):
listS1 = []
while True:
for item in range(2, i + 1):
flag = True
if i % item == 0:
listS1.append(str(item))
i = i // item
flag = False
if not flag:
break
if i == 1:
break
s = '*'.join(listS1)
return s
for i in range(n,m+1):
print("{}={}".format(i,fun(i)))
字符串对比
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间), 它们之间的关系是以下4中情况之一: 1:两个字符串长度不等。比如 Beijing 和 Hebei 2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写) ,比如 Beijing 和 Beijing 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致 (也就是说,它并不满足情况2)。比如 beijing 和 BEIjing 4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。 比如 Beijing 和 Nanjing 编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。 输入 包括两行,每行都是一个字符串 输出 仅有一个数字,表明这两个字符串的关系编号 样例输入 BEIjing beiJing 样例输出 3
str1 = input()
str2 = input()
if len(str1) != len(str2):
print("1")
elif len(str1) == len(str2) and str1 == str2:
print("2")
elif len(str1) == len(str2) and str1.upper() == str2.upper():
print("3")
elif len(str1) == len(str2) and str1.upper() != str2.upper():
print("4")
时间转换
给定一个以秒为单位的时间t,要求用 “< H> :< M> :< S> ”的格式来表示这个时间。 < H> 表示时间,< M> 表示分钟, 而< S> 表示秒,它们都是整数且没有前导的“0”。 例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。 输入 输入只有一行,是一个整数t(0< =t< =86399)。 输出 输出只有一行,是以“< H> :< M> :< S> ”的格式所表示的时间,不包括引号。 样例输入 5436 样例输出 1:30:36
t = int(input())
if t%3600 == t:
h = 0
m = t//60
s = t-60*m
else:
h = t//3600
m = (t-3600*h)//60
s = t-3600*h-60*m
print("{}:{}:{}".format(h,m,s))
龟兔赛跑预测
他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰, 于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以 上, 它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的, 但是所有的乌龟却是一致——它们不到终点决不停止。
然而有些比赛相当漫长,全程观看会耗费大量时间, 而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据 ——兔子的速度v1(表示每秒兔子能跑v1 米), 乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。 但是小华很懒,不想通过手工计算推测出比赛的结果, 于是他找 到了你——清华大学计算机系的高才生——请求帮助, 请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。 输入 输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l, 其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数) 输出 输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”, 分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。 第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。 样例输入 10 5 5 2 20 样例输出 D 4
v1,v2,t,s,l = map(int,input().split())
t1 = 0
t2 = 0
time = 0
while t1<l and t2<l:
t1 += v1
t2 += v2
time += 1
if (t1-t2) >= t and t1<l and t2<l:
for i in range(s):
t2 += v2
time += 1
if t2>=l:
break
if t1 == t2:
print("D")
elif t1 > t2:
print("R")
else:
print("T")
print(time)
|