python_蓝桥杯刷题记录_笔记_全AC代码_入门4

题单目录

[1.P1914 小书童------凯撒密码](#1.P1914 小书童——凯撒密码)

[2.P1028 [NOIP2001 普及组] 数的计算](#2.P1028 [NOIP2001 普及组] 数的计算)

[3.P1036 [NOIP2002 普及组] 选数](#3.P1036 [NOIP2002 普及组] 选数)

[4.P1149 [NOIP2008 提高组] 火柴棒等式](#4.P1149 [NOIP2008 提高组] 火柴棒等式)

[5.P1217 [USACO1.5] 回文质数 Prime Palindromes](#5.P1217 [USACO1.5] 回文质数 Prime Palindromes)

[6.P1478 陶陶摘苹果(升级版)](#6.P1478 陶陶摘苹果(升级版))

[7.P1618 三连击(升级版)](#7.P1618 三连击(升级版))


1.P1914 小书童------凯撒密码

python 复制代码
n = int(input())
str = input()
for i in range(len(str)):
    asc = ord(str[i]) + n
    if asc > ord('z'):
        asc = asc - ord('z') + ord('a')-1
    temp = chr(asc)
    print(f'{temp}',end='')

2.P1028 [NOIP2001 普及组] 数的计算

python 复制代码
h = [0] * 10001
n = int(input())
for i in range(1, n + 1):
    h[i] = 1
    for j in range(1, i // 2 + 1):
        h[i] += h[j]
print(h[n])

3.P1036 [NOIP2002 普及组] 选数

python 复制代码
import math
ans = 0
def isPrime(sum):
    if sum<2:
        return False
    for i in range(2,int(math.sqrt(sum))+1):
        if sum%i == 0:
            return False
    return True
def dfs(num,i,sum):
    global ans,l
    if num == k:
        if isPrime(sum):
            ans += 1
        return
    for j in range(i,n):
        dfs(num+1,j+1,sum+l[j])
    return

n,k = map(int,input().split(' '))
l = list(map(int,input().split(' ')))

dfs(0,0,0)
print(ans)

4.P1149 [NOIP2008 提高组] 火柴棒等式

感觉没有写错,但是提交上去会显示超时,怎么改?????????

python 复制代码
l = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
n = int(input())
n -= 4
ans = 0
flag = 0
def f(num):
    global ans
    if num == 0:
        return 6
    while num != 0:
        ans += l[num%10]
        num //= 10
    return ans

for i in range(1111):
    for j in range(1111):
        num = f(i)+f(j)+f(i+j)
        if num == n:
            flag += 1
print(flag)

5.P1217 [USACO1.5] 回文质数 Prime Palindromes

还是遇到很大的数字之后就又超时了,怎么解决呀?????

python 复制代码
import math
a,b = map(int,input().split(' '))
def isPrime(n):
    if n<2:
        return False
    for i in range(2,int(math.sqrt(n))+1):
        if n%i == 0:
            return False
    return True

def isPalindromes(n):
    k = 0
    mark = n
    while mark != 0:
        m = mark % 10
        mark //= 10
        k = k*10 + m
    if k == n:
        return True
    return False
for i in range(a,b+1):
    if isPrime(i) and isPalindromes(i):
        print(i)

6.P1478 陶陶摘苹果(升级版)

sort 与 sorted 区别:

  1. sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
  2. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  3. sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)

这道题主要在于要自己定义排序的规则

python 复制代码
import functools

n, s = map(int,input().split(' '))
a, b = map(int,input().split(' '))
h = a + b

ans = 0
l = []
for i in range(n):
    temp = list(map(int,input().split(' ')))
    l.append(temp)

def my_cmp(x,y):
    if x[1]>y[1]:
        return 1
    else:
        return -1

l.sort(key=functools.cmp_to_key(my_cmp))
for k in l:
    if k[0]<=h and s>=k[1]:
        s -= k[1]
        ans += 1
    if s < k[1]:
        break
print(ans)

7.P1618 三连击(升级版)

太不容易了,一开始的做法是跟普通三连击的那个做法来的,结果就是有几个测试点一直都不能通过,然后我就再去思考了其他解法。

突然想到可以用字符串结合集合的做法去完成,很显然方便了很多,就是需要不断地去测试找到一些特殊情况,可算是找到了,最终全部通过了AC。

python 复制代码
a, b, c = map(int,input().split(' '))
flag = 1
if a == 0 or b == 0 or c == 0:
    flag = 1
else:
    for i in range(1,334):
        num1 = i * a
        num2 = i * b
        num3 = i * c
        num11 = str(num1)
        num22 = str(num2)
        num33 = str(num3)
        if len(num11)==3 and len(num22)==3 and len(num33)==3:
            str_all = num11+num22+num33
            str_set = set(str_all)
            if len(str_set) == 9 and '0' not in str_set:
                print(f'{num1} {num2} {num3}')
                flag = 0
if flag:
    print('No!!!')

8.总结

继续加油!!!

相关推荐
蒙奇D索大1 小时前
【11408学习记录】[特殊字符] 速解命题核心!考研数学线性代数:4类行列式满分技巧(含秒杀公式)
笔记·学习·线性代数·考研·改行学it
江池俊1 小时前
通过Docker和内网穿透技术在Linux上搭建远程Logseq笔记系统
linux·笔记·docker
moxiaoran57532 小时前
uni-app学习笔记三十六--分段式选项卡组件的使用
笔记·学习·uni-app
笑鸿的学习笔记2 小时前
Windows笔记之Win11让非焦点窗口程序也能获得流畅性能的方法
windows·笔记
moxiaoran57534 小时前
uni-app项目实战笔记1--创建项目和实现首页轮播图功能
笔记·uni-app
fictionist5 小时前
动态 Web 开发技术入门篇
java·服务器·开发语言·笔记·学习·mysql·spring
love530love5 小时前
【笔记】NVIDIA AI Workbench 中安装 cuDNN 9.10.2
linux·人工智能·windows·笔记·python·深度学习
阑梦清川6 小时前
国防科技大学计算机基础慕课课堂学习笔记
笔记·学习·数学建模
不太可爱的叶某人9 小时前
【学习笔记】深入理解Java虚拟机学习笔记——第3章 垃圾收集器与内存分配策略
java·笔记·学习
半导体守望者10 小时前
Kyosan K5BMC ELECTRONIC INTERLOCKING MANUAL 电子联锁
经验分享·笔记·功能测试·自动化·制造