试题 基础练习 矩形面积交

问题描述

平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

输入格式

  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。

输出格式

  输出仅包含一个实数,为交的面积,保留到小数后两位。

样例输入

1 1 3 3
2 2 4 4

样例输出

1.00

ls1 = list(map(float,input().split()))
ls2 = list(map(float,input().split()))min1X=min(ls1[0],ls1[2])
max1X=max(ls1[0],ls1[2])
min1Y=min(ls1[1],ls1[3])
max1Y=max(ls1[1],ls1[3])min2X=min(ls2[0],ls2[2])
max2X=max(ls2[0],ls2[2])
min2Y=min(ls2[1],ls2[3])
max2Y=max(ls2[1],ls2[3])X1=max(min1X,min2X)
X2=min(max1X,max2X)
Y1=max(min1Y,min2Y)
Y2=min(max1Y,max2Y)if X2-X1<0 or Y2-Y1<0:print("0.00")
else:Area=abs(Y2-Y1)*abs(X2-X1)print("%.2f" % Area)   

要求两个矩形的面积交,要先列出两个矩形可能出现的位置情况,但总的来说无非就相离与相交,相离直接输出0,相交求面积,而要判断位置关系以及求面积,我们就得知道两个矩形的相应的边的位置,比如说其中一个矩形的最上面的边,那就是得知道坐标中最大的y值,即max(ls1[1],ls1[3]),其他的边也是类似的方法求得。然后:两个矩形的右边的边中较左边的边,比两个矩形的左边的边中较右边的边还要靠左时,他们就相离,上下相离的判定方法类似。求交面积的话,两个矩形的最上面的边较小的减去最下面的边较大的边就是交面积的宽,长的求法类似,长宽求得相乘即可。

试题 基础练习 完美的代价

问题描述

  回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
  交换的定义是:交换两个相邻的字符
  例如mamad
  第一次交换 ad : mamda
  第二次交换 md : madma
  第三次交换 ma : madam (回文!完美!)

输入格式

  第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
  第二行是一个字符串,长度为N.只包含小写字母

输出格式

  如果可能,输出最少的交换次数。
  否则输出Impossible

样例输入

5
mamad

样例输出

3

def judge_hwen(n,s):  # 判断能不能组成回文数_str = set("".join(s))if n % 2 == 0: # 对于字符串长度是偶数的字符串for i in _str:        # 当某个字符的个数不是偶数执行下列判断if s.count(i) % 2 != 0:print("Impossible")return Falseelse:return Trueelse: # 对于字符串长度是奇数的字符串temp = set()for i in _str:if s.count(i) % 2 != 0:temp.add(i) # 把个数是奇数个的字符放进tempif len(temp) > 1:print("Impossible")return Falseelse:return Truedef get_step(n,s,sv,res):for i in range(n // 2):if s[i:].count(s[i]) != 1:temp = sv[:n-i].index(s[i]) # 是要移动的步数sv.pop(temp)res += temps = sv[::-1] # 更新正序else: # 字符个数是1,直接移动到最中间位置res += n//2 -i # 需要移动的步数s[i] = None  # 下一步就可以像偶数一样处理 相当于把这个元素删掉了sv = s[::-1]  # 更新svreturn resn = int(input())
s = list(input())
sv = s[::-1]
res = 0
if judge_hwen(n,s):print(get_step(n,s,sv,res))

判断能否组成回文数:不能组成回文数的情况:1、字符串长度为偶数时,某个字符的个数为奇数个。2、字符串长度为奇数时,个数是奇数个的字符多于一个。

累加步数:字符为偶数个时,逆序相同字符的下标就是要移动的步数,字符个数为奇数时,直接移到中间。累加步数后,移除该字符继续下一个字符

详细原理参照:背包问题贪心算法Python算法题实战 -《完美的代价》

试题 基础练习 数的读法

问题描述

  Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。
  比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。
  所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:
  十二亿三千四百五十六万七千零九
  用汉语拼音表示为
  shi er yi san qian si bai wu shi liu wan qi qian ling jiu
  这样他只需要照着念就可以了。
  你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
  注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。

输入格式

  有一个数字串,数值大小不超过2,000,000,000。

输出格式

  是一个由小写英文字母,逗号和空格组成的字符串,表示该数的英文读法。

样例输入

1234567009

样例输出

shi er yi san qian si bai wu shi liu wan qi qian ling jiu

s = {0: 'ling', 1: 'yi', 2: 'er', 3: 'san', 4: 'si', 5: 'wu', 6: 'liu', 7: 'qi', 8: 'ba', 9: 'jiu'}
res = []
long_data = input()def read_four_num(n):   #用这个函数读四位数temp = list(map(int, n))if temp[0] != 0:   #千位如果是零不读res.append(s[temp[0]])res.append('qian')else:passif temp[1] != 0:    #百位不为零直接读出来res.append(s[temp[1]])res.append('bai')elif (temp[0] == 0 and temp[1] == 0) or (temp[1] == 0 and temp[2] == 0 and temp[3] == 0):   #千位,百位都是零的话不读passelse:res.append(s[temp[1]])    #千位不是零,百位是零读出来if temp[2] != 0 and temp[2] != 1:    #十位不是零和一res.append(s[temp[2]])res.append('shi')elif temp[2] == 1 and temp[0] == 0 and temp[1] == 0:res.append('shi')elif (temp[1] == 0 and temp[2] == 0) or (temp[2] == 0 and temp[3] == 0):   #如果百位是零,十位也是零,连零读一个#如果百位个位都是零,不读passelse:res.append(s[temp[2]])if temp[3] != 0:res.append(s[temp[3]])else:passreturn resif 0 < len(long_data) <= 4:ans = read_four_num(long_data.rjust(4,'0'))
elif 4 < len(long_data) <= 8:new = long_data.rjust(8,'0')read_four_num(new[:4])res.append('wan')if new[4:] != '0000' and new[4:][0] == '0':res.append('ling')ans = read_four_num(new[4:])
elif 8 < len(long_data) <= 10:new = long_data.rjust(12,'0')read_four_num(new[:4])res.append('yi')if new[4:8] != '0000':read_four_num(new[4:8])res.append('wan')elif new[4:12] == '00000000':passelse:res.append('ling')ans = read_four_num(new[8:12])
for x in ans:print(x,'',end= '')

每次读四个数,不足四个数的前面补零,四位数前面为零的不读,中间为零的加读'ling',十位是0或1的不读,八位数千位为0是加读‘ling’,万位后加读‘wan’,十位数前面补0到十二位,亿位后加读'yi',中间四位不全为0时万位后加读‘wan’,全为0加读‘ling’,亿后面为都为0不读。这一题要有耐心把所有情况都列出来。

思路参照:蓝桥杯 基础练习 数的读法Python(水题)(要耐心)

蓝桥杯基础试题练习小结(vip)(二)相关推荐

  1. 蓝桥杯基础试题 字母图形 C语言实现

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC ...

  2. 蓝桥杯 基础练习VIP FJ的字符串 java

    蓝桥杯 基础练习VIP FJ的字符串 java 题目 题目描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = " ...

  3. 蓝桥杯基础视频 笔记

    学习地址:哔哩哔哩网站--蓝桥杯基础视频         博主整理--源码下载--百度网盘链接 蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部 ...

  4. 蓝桥杯基础练习 - 2n皇后问题解析

    问题描述         给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一 ...

  5. 蓝桥杯c语言试题幸运数,蓝桥杯  历届试题 幸运数  dfs

    时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,. ...

  6. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制

    目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...

  7. 蓝桥杯基础练习一闰年判断

    蓝桥杯基础练习一闰年判断 会不定时发布蓝桥杯练习题目,有需要的可以关注一下,谢谢! 1.闰年判断问题 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个年份,判断这一年是不是闰 ...

  8. 蓝桥杯 基础练习 01字串 C/C++/Java/Python描述

    蓝桥杯 基础练习 01字串 C/C++/Java/Python描述   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博 ...

  9. 二分搜索,POJ2456,NYOJ 914, 区间移位-蓝桥杯-历届试题

    二分搜索是不断缩减可能解的范围来得到最优解, 因为每次是折半, 所以指数爆炸有多快,这个效率就有多高 POJ2456为例, 传送门 简而言之, 就是将牛之间的距离的最小值最大化. #include&l ...

最新文章

  1. 关闭chrome浏览器的developer tools
  2. C语言常用宏定义(#define)使用方法
  3. SonarQube4.4+Jenkins进行代码检查实例之一
  4. vmware ubuntu重置root密码
  5. REVERSE-PRACTICE-BUUCTF-3
  6. 浅谈对px em rem的理解
  7. 代码也能“杀”虫:此虫,真虫非Bug也
  8. 大数据之-入门_大数据特点(4V)---大数据之hadoop工作笔记0003
  9. 嵌入式linux下网卡设备驱动与网络协议栈的设计实现.pdf,嵌入式系统的通用网络驱动模型设计与实现.pdf...
  10. cocos2dx 3.0 触摸机制
  11. 小学校本课程计算机前言,《创意手工》三河小学校本课程——序言
  12. 实习之路0--设计模式之策略模式的理解(鸭子类例子)
  13. 酷我音乐盒在听一遍就自己默认下载…
  14. android系统软件卸载_adb配置使用
  15. 第五项修炼--学习型组织的艺术与实践
  16. Tsar学习笔记---tsar tsar2db mysql 集成调测篇
  17. Windows环境下使用Python设计应用软件——【1】pyqt设计界面
  18. 计算机演奏喀秋莎教程,微课制作之喀秋莎演示教学.doc
  19. 计算机图形学在医疗中的应用,计算机图形学之虚拟现实在医疗领域中应用.ppt...
  20. iOS 开发 带区号的城市三级联动(xml解析)

热门文章

  1. 想要“吃鸡”吃的爽 华为云游戏解决方案离不了
  2. HTML+CSS(精灵图)实现微信滑动门技术
  3. Python中的四种队列(queue)、堆(heap)
  4. 怎么样关闭计算机的操作音,电脑报警音怎么关闭
  5. 怎样提问?(下)-Leo读提问的智慧(3)
  6. (Android版)AR 现实增强 高通 Vuforia QCAR SDK学习笔记(一)
  7. 【转】Linux中tty、pty和pts概念及区别
  8. 家乐福计算机管理与控制系统,家乐福的订货部门是整个家乐福物流系统的核心,控制整个企业的物流运转。在家乐福..._考试资料网...
  9. hyperledger/cello安装和使用
  10. vue进阶:基于vue-cli3.x创建项目(搭建手脚架)