IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Python-矩形面积交、分解质因数、字符串对比、时间转换、龟兔赛跑预测 程序设计 -> 正文阅读

[数据结构与算法]Python-矩形面积交、分解质因数、字符串对比、时间转换、龟兔赛跑预测 程序设计

矩形面积交

平面上有两个矩形,它们的边平行于直角坐标系的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()))
#m=[x1 y1 x2 y2]
n = list(map(float,input().split()))
#n=[e1 f1 e2 f2]
a = [min(m[0],m[2]),min(m[1],m[3]),max(m[0],m[2]),max(m[1],m[3])]
#a=[x11 x12 x21 x22]
b = [min(n[0],n[2]),min(n[1],n[3]),max(n[0],n[2]),max(n[1],n[3])]
#b=[y11 y12 y21 y22]
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' % area)
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=2
3
7=7
8=222
9=33
10=2
5

#import math
n,m = map(int,input().split())
#判断素数
listS = []
for i in range(n,m+1):
    flag = True
    for j in range(2,i): #for j in range(2,int(math.sqrt(i))+1)
        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)))
    #s = ''
    # for item1 in range(len(listS1)):
    #     if item1 == len(listS1)-1:
    #         s += listS1[item1]
    #         break
    #     s += listS1[item1]
    #     s += '*'
    #替换下面一行
    #s = '*'.join(listS1)
    #return s

字符串对比

给定两个仅由大写字母或小写字母组成的字符串(长度介于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

# 一小时等于60分钟 一小时=3600秒 一分钟=60秒
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)
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:27:37  更:2022-04-06 23:29:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:54:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码