Python每日一练(20230503) 外观数列、素数对、子集

简介: Python每日一练(20230503) 外观数列、素数对、子集

1. 外观数列


给定一个正整数 n ,输出外观数列的第 n 项。


「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。


你可以将其视作是由递归公式定义的数字字符串序列:

   countAndSay(1) = "1"

   countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。


前五项如下:

1.     1

2.     11

3.     21

4.     1211

5.     111221


第一项是数字 1  


描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"

描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"

描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"

描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"

要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。


例如,数字字符串 "3322251" 的描述如下图:

23bfeaec5ed390ee12e4ab4f6bd7da5a.jpeg



示例 1:

输入:n = 1

输出:"1"

解释:这是一个基本样例。


示例 2:

输入:n = 4

输出:"1211"

解释:

countAndSay(1) = "1"

countAndSay(2) = 读 "1" = 一 个 1 = "11"

countAndSay(3) = 读 "11" = 二 个 1 = "21"

countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211"


提示:

   1 <= n <= 30

出处:

https://edu.csdn.net/practice/26974818

代码:

class Solution:
    def countAndSay(self, n):
        if n == 1:
            return '1'
        x = '1'
        while n > 1:
            x = self.count(x)
            n -= 1
        return x
    def count(self, x):
        m = list(x)
        res = []
        m.append(None)
        i , j = 0 , 0
        while i < len(m) - 1:
            j += 1
            if m[j] != m[i]:
                res += [j - i, m[i]]
                i = j
        return ''.join(str(s) for s in res)
# %%
s = Solution()
print(s.countAndSay(n = 1))
print(s.countAndSay(n = 4))


输出:

1

1211


2. 找出素数对


任意输入一个大于10的偶数,编程找出所有和等于该偶数的素数对

以下程序实现了这一功能,请你填补空白处内容:

出处:

https://edu.csdn.net/practice/26974819

代码:

def is_prime(num):
    """ 判断一个数是否为素数 """
    if num < 2:  # 小于2的数都不是素数
        return False
    for i in range(2, int(num/2)+1):  # 遍历2到n/2,判断num是否能被整除
        if num % i == 0:
            return False
    return True
def find_prime_pair(n):
    """ 找出和为n的素数对 """
    result = []
    for i in range(2, int(n/2)+1): # 遍历2到n/2
        if is_prime(i) and is_prime(n-i): # 如果i和n-i都是素数,就保存到结果中
            result.append((i, n-i))
    return result
n = int(input("请输入一个大于10的偶数:"))
while n <= 10 or n % 2 != 0: # 如果不符合条件就重新输入
    n = int(input("输入错误,请重新输入一个大于10的偶数:"))
result = find_prime_pair(n)
print("所有和为",n,"的素数对为:")
for pair in result:
    print("%d=%d+%d"%(n,*pair))



输入输出:

请输入一个大于10的偶数:20

所有和为 20 的素数对为:

20=3+17

20=7+13


3. 子集


给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。


示例 1:

输入:nums = [1,2,3]

输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]


示例 2:

输入:nums = [0]

输出:[[],[0]]


提示:

   1 <= nums.length <= 10

   -10 <= nums[i] <= 10

   nums 中的所有元素 互不相同


出处:

https://edu.csdn.net/practice/26974820

代码:

python

输出:






目录
相关文章
|
7月前
|
Python
435: 素数的求解(python)
435: 素数的求解(python)
|
7月前
|
算法 Python
Python判断素数
Python判断素数
|
7月前
|
Python
利用Python判断一个数是否为素数
利用Python判断一个数是否为素数
182 0
|
7月前
|
机器学习/深度学习 人工智能 算法
【代数学作业1完整版-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
【代数学作业1完整版-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
134 0
|
7月前
|
机器学习/深度学习 人工智能 算法
【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
124 0
|
7月前
|
机器学习/深度学习 Python 算法
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
|
7月前
|
存储 运维 数据挖掘
Python列表中每个元素前面连续重复次数的数列统计
Python列表中每个元素前面连续重复次数的数列统计
59 1
|
4月前
|
Python
【Leetcode刷题Python】416. 分割等和子集
LeetCode 416题 "分割等和子集" 的Python解决方案,使用动态规划算法判断是否可以将数组分割成两个元素和相等的子集。
33 1
|
4月前
|
索引 Python
【Leetcode刷题Python】78. 子集
LeetCode题目78的Python编程解决方案,题目要求给定一个互不相同的整数数组,返回该数组所有可能的子集(幂集),且解集中不能包含重复的子集。
25 1
|
4月前
|
数据可视化 Python
利用Python快速提取字体子集
利用Python快速提取字体子集