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

继续加油!!!

相关推荐
小码狐1 小时前
并查集【数据结构与算法】【C语言版-笔记】
数据结构·笔记·并查集·c语言版
LearnTech_1232 小时前
【学习笔记】手写一个简单的 Spring MVC
笔记·学习·spring·spring mvc
笑鸿的学习笔记4 小时前
工具笔记之生成图表和可视化的标记语言Mermaid
笔记
kissSimple4 小时前
UE行为树编辑器图文笔记
笔记·ue5·编辑器·unreal engine·unreal engine 5
l1x1n04 小时前
DOS 命令学习笔记
笔记·学习·web安全
winds~5 小时前
自动驾驶-问题笔记-待解决
人工智能·笔记·自动驾驶
s_little_monster6 小时前
【QT】QT入门
数据库·c++·经验分享·笔记·qt·学习·mfc
alfiy6 小时前
Elasticsearch学习笔记(六)使用集群令牌将新加点加入集群
笔记·学习·elasticsearch
爱学的小涛6 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
爱学的小涛6 小时前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio