python基础知识点(蓝桥杯python科目个人复习计划73)

第一题:奇怪的捐赠

题目描述:

地产大佬先生临终的遗愿是拿出100万元给x社区的居民抽奖。

麻烦的是,他有个很奇怪的要求:

(1)100万元正好被分成若干份,不能有剩余。每份必须是7的若干次方元。比如1元、7元、49元。

(2)相同金额的分数不能超过5份。

(3)在满足上述条件的情况下,分成的份数越多越好。

请你帮忙计算一下,最多可以分成多少份?

python 复制代码
# 两次遍历,从大到小,保证不会有剩余,然后遍历5次
a = 1000000
ans = 0
for i in range(7,-1,-1):
  for j in range(5):
    if (a - 7 ** i) >= 0:
      ans += 1
      a -= 7 ** i
    else:
      break
print(ans)

第二题:最长回文子串

题目描述:

给定一个字符串s,请你求出s的最长回文字符串。

输入描述:

输入一行,包含一个字符串s;

1 <= |s| <= 5 * 10^5,保证s只包含大写字母、小写字母和数字。

输出描述:

输出共1行,包含一个整数,表示答案。

python 复制代码
import os
import sys

# 请在此输入您的代码
def longest_palindrome(s: str) -> int:
    def expand_around_center(left: int, right: int) -> int:
        while left >= 0 and right < len(s) and s[left] == s[right]:
            left -= 1
            right += 1
        return right - left - 1

    max_length = 0
    for i in range(len(s)):
        # 以s[i]为中心的最长回文子串
        len1 = expand_around_center(i, i)
        # 以s[i]和s[i+1]为中心的最长回文子串
        len2 = expand_around_center(i, i + 1)
        # 更新最大长度
        max_length = max(max_length, len1, len2)

    return max_length

# 读取输入
s = input()
# 计算最长回文字符串的长度
result = longest_palindrome(s)
# 输出结果
print(result)

这个题我用的是中心扩展算法。


第三题:回文判定

题目描述:

给定一个长度为n的字符串s,请你判断字符串s是否回文。

输入描述:

输入仅一行包含一个字符串s。

1 <= |s| <= 10^6,保证s只包含大小写字母。

输出描述:

若字符串s为回文串,则输出Y,否则输出N。

python 复制代码
import os
import sys

# 请在此输入您的代码
s = input()
if s[:] == s[::-1]:
  print("Y")
else:
  print("N")

ok,这次就做这几个题,明天继续!

相关推荐
云青山水林19 分钟前
零基础如何准备蓝桥杯
蓝桥杯
熬了夜的程序员4 小时前
【LeetCode】90. 子集 II
数据结构·算法·leetcode·链表·职场和发展·排序算法
熬了夜的程序员4 小时前
【LeetCode】91. 解码方法
算法·leetcode·链表·职场和发展·排序算法
熬了夜的程序员1 天前
【LeetCode】89. 格雷编码
算法·leetcode·链表·职场和发展·矩阵
程序员杰哥1 天前
Pytest之收集用例规则与运行指定用例
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
熬了夜的程序员1 天前
【LeetCode】87. 扰乱字符串
算法·leetcode·职场和发展·排序算法
超级大只老咪1 天前
蓝桥杯知识点大纲(JavaC组)
java·算法·蓝桥杯
遇印记1 天前
2026蓝桥杯
职场和发展·蓝桥杯