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.总结

继续加油!!!

相关推荐
码农的小菜园4 小时前
gradle常用指令使用笔记
笔记
鸟电波5 小时前
硬件笔记——示波器篇
笔记
Don.TIk5 小时前
SpringCloud学习笔记
笔记·学习·spring cloud
cd11840516 小时前
AutoCAD Electrical 2020学习笔记
笔记·学习
Sarvartha7 小时前
递归、回溯与动态规划学习笔记
笔记·学习·动态规划
眼镜哥(with glasses)8 小时前
网络技术三级考试综合题笔记整理(第二题、第三题)
网络·笔记·智能路由器
半壶清水8 小时前
[软考网规考点笔记]-数据通信基础之差错控制编码技术
网络·笔记·网络协议·tcp/ip
左左右右左右摇晃8 小时前
Java List集合
笔记
OxyTheCrack8 小时前
【C++】详细拆解std::mutex的底层原理
linux·开发语言·c++·笔记
左左右右左右摇晃8 小时前
红黑树笔记整理
笔记