草庐IT

蓝桥杯第10天(Python组)

Jin、yz 2024-04-28 原文

快速幂

解题:掌握取模运算性质,通过快速倍增幂运算加快计算效率

import os
import sys

# 请在此输入您的代码

b,p,k = map(int,input().split())
def fastPow(a,n,mod):
  ans=1   # 返回的结果
  while n:  # 将n看成二进制数
    if n&1:  # 把n看成二进制数,逐个处理最后一位,判断是否为1
      ans = ans *a %mod  # 如果n的最后一位是1,这个地方需要乘
    a =a *a % mod  # 继续分解    a^0 a^2 a^4 a^8
    n>>=1      # 右移一位
  return ans

print(fastPow(b,p,k))

寻找素数

1不是素数,范围从[2--int(sqrt(x)+1)]内找

可以用itertools中的collections找排列


import itertools
import math

def is_prime(x):
    if x==1:  # 1不是素数
        return False
    for i in range(2,int(math.sqrt(x)+1)):  # 从2--int(sqrt(x)+1)
        if x%i==0:
            return False
    return True

n,k = map(int,input().split())
my_list = [int(x) for x in input().split()]
cnt = 0
for e in itertools.combinations(my_list,k):
    num=sum(e)
    if is_prime(num) :
        cnt+=1

print(cnt)

简单题,送分题,判断素数以及字符串统计

内置函数max,min,字符串函数 str.count()

import os
import sys

# 请在此输入您的代码
import math

word = input()
def is_primer(x):
  if x==1 or x==0:
    return False
  for i in range(2,int(1+math.sqrt(x))):
    if x %i==0:   return False
  return True

max_count = -1
min_count = 100
for i in word:
  # if word.count(i)>max_count:
  #   max_count=word.count(i)
  # if word.count(i)<min_count:
  #   min_count = word.count(i)

  # 直接使用内置函数更加方便
  n = word.count(i)
  max_count=max(n,max_count)
  min_count= min(n,min_count)


flag = is_primer(max_count-min_count)
if flag:
  print('Lucky Word')
  print(max_count-min_count)
else  :
  print('No Answer'+'\n'+'0')

字符串处理,判断个数

通过字典来判断有多少个数,但是有字典序问题,最好用列表来存储个数

dic = {}
# 通过80%,原因出在字典排序上
for i in input():
   dic[i]=dic.get(i,0)+1
a=sorted(dic.items(),key = lambda s:s[1])

# 方法一自定义排序规则
# 方法二排序后自己处理
val = a[-1][1]
my_list =[a[-1][0]]
i=-2
while 1:  # 将所有最大值加进列表处理字典序
 if a[i][1]==val:
    my_list.append(a[i][0]) 
    i-=1
 else:break
my_list.sort()
print(my_list[0])
print(val)



# s = input()
# n = [0]*256
# for ch in s:
#   n[ord(ch)]=n[ord(ch)]+1   # 转为ASCII码存储
# k = n.index(max(n))
# print(chr(k)) # 转为字符
# print(max(n))

送分题字符串,比较字符串大小,重在方法从左到右遍历,这个不能改变顺序

import os
import sys

# 请在此输入您的代码
# 这里要求原来顺序

s = list(input())
k = eval(input())
for _ in range(k):  # 从左到右遍历,左大就删除
  for i in range(len(s)-2):  # len-1 下标从1开始,即尾元素
    if s[i]>s[i+1]:
      del s[i]
      break  # 记得跳出循环,不然index错误

print(''.join(s))

送分题,将数字转为字符串排序来判断数字的性质

import os
import sys

# 请在此输入您的代码

n = int(input())
ans =0
for i in range(1,n+1):  # 1-n
  s=list(str(i))
  if sorted(s) == s:  
    ans+=1
print(ans)

中档难度,DFS搜索加上字符拼接,判断子集


def check(x,y):  # (drag,word)后,前
    flag =0
    for i in range(1,min(len(x),len(y))):  # 遍历查找是否有公共部分
        if x[-i:len(x)] ==y[:i]:
            flag = 1   # 找到公共部分
            break
    if flag==1: # 判断是否为子集
        if x in y or y in x:    return False
        else: return i
    else:
        return False

def dfs(drag,last):
    global ans
    ans = max(ans,len(drag))  # 更新最大值
    for i in range(n):  # 遍历找下一个
        if check(last,word[i]) !=False and vis[i]<2:  # 能够拼接同时没用到两次
            r = drag+word[i][check(last,word[i]):]  # 拼接
            vis[i]+=1
            dfs(r,word[i])  # DFS搜索下一个
            vis[i]-=1

n = int(input())
word =[]
for i in range(n):
    word.append(input())
first = input()
ans =0
for i in range(n):
    vis=[0]*n
    if word[i][0]==first:
        vis[i]+=1     # 每个最多只能用2次
        res = word[i]  # 记录上一个拼接的
        dfs(res,res)
print(ans)

平面切分问题

关键在于掌握关系:切分数=与原来存在直线的交点数+1

总结:每增加一条直线,平面分割的增加数量,等于“其与先前直线的交点数(不包括与已有交点重合的点)+1”。

import math
n = int(input())
line =[tuple(map(int,input().split(" "))) for i in range(n)]
#line2=[]
se = set(line) # 去重
##for x,y in line:
##    g = gcd(x,y)
##    line2.append((x//g,y//g))
# 不需要用gcd来处理
line = line(se)
ans = 2
for i in range(1,len(line)):
    a1,b1 = line[i]
    pos = set()
    for j in range(i):  #第i条直线与前面的直线的关系
        a2,b2 = line[j]
        if a1 ==a2 : continue   # 斜率相同,即直线平行
        # y = a1x+b1
        # y = a2x+b2
        x = (b1-b2)/(a1-a2)    # 计算两条直线的交点
        y = a1*x+b1
        pos.add((x,y))   # 存交刀集合,去重
    ans += len(pos)+1

print(ans)

三角形面积计算

注意面积为正,格式化输出方法

方法一

方法二

import os
import sys

# 请在此输入您的代码
n = int(input())
m=[0]
for i in range(3*n):
  m.append(tuple(map(float,input().split())))

for i in range(1,n+1):  # 得到两个向量
  x1=(m[3*i-1][0]-m[3*i][0],m[3*i-1][1]-m[3*i][1])
  x2=(m[3*i-2][0]-m[3*i][0],m[3*i-2][1]-m[3*i][1])
  s=(x1[0]*x2[1]-x1[1]*x2[0])/2
  if s<0:  # 注意面积为正
      s=-s
  print("{:.2f}".format(s))

点积和叉积的应用

通过叉乘判断点与直线的关系

def Cross(x1,y1,x2,y2):
    return x1*y2-y1*x2   # 叉积
t = int(input())
for _ in range(t):
    ax,ay = map(float,input().split())
    bx,by = map(float,input().split())
    cx,cy = map(float,input().split())
    x1=ax-cx
    y1=ay-cy
    x2=bx-cy
    y2=by-cy
    s = Cross(x1,y1,x2,y2)/2  #用叉乘算面积
    if s>0:print('L')
    if s<0:print("R")
    if s==0 :print("IN")

判断点与线段关系

在上一题基础上判断是否在[ax,bx]区间即可

def Cross(x1,y1,x2,y2):
    return x1*y2-y1*x2   # 叉积
t = int(input())
for _ in range(t):
    ax,ay = map(float,input().split())
    bx,by = map(float,input().split())
    cx,cy = map(float,input().split())
    x1=ax-cx
    y1=ay-cy
    x2=bx-cy
    y2=by-cy
    s = Cross(x1,y1,x2,y2)/2  #用叉乘算面积
    if s==0 and ax<=cx<=bx:
      print("Yse")
    else:
      print("No")

有关蓝桥杯第10天(Python组)的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  3. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  4. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  5. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  6. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  7. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  8. Python 刷Leetcode题库,顺带学英语单词(31) - 2

    ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem

  9. python - 是否可以使用 Ruby 或 Python 禁用 anchor /引用来发出有效的 YAML? - 2

    是否可以在PyYAML或Ruby的Psych引擎中禁用创建anchor和引用(并有效地显式列出冗余数据)?也许我在网上搜索时遗漏了一些东西,但在Psych中似乎没有太多可用的选项,而且我也无法确定PyYAML是否允许这样做.基本原理是我必须序列化一些数据并将其以可读的形式传递给一个不是真正的技术同事进行手动验证。有些数据是多余的,但我需要以最明确的方式列出它们以提高可读性(anchor和引用是提高效率的好概念,但不是人类可读性)。Ruby和Python是我选择的工具,但如果有其他一些相当简单的方法来“展开”YAML文档,它可能就可以了。 最佳答案

  10. .net - .NET 将如何影响 Python 和 Ruby 应用程序? - 2

    我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth

随机推荐