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

输出:






目录
相关文章
|
2月前
|
算法 Python
Python判断素数
Python判断素数
|
2月前
|
Python
利用Python判断一个数是否为素数
利用Python判断一个数是否为素数
18 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【代数学作业1完整版-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
【代数学作业1完整版-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
61 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
56 0
|
27天前
|
Python
1174: 绝对素数(python)
1174: 绝对素数(python)
|
27天前
|
Python
189: 素数判定(python)
189: 素数判定(python)
|
2月前
|
Python
Python小技巧:计算素数个数
Python小技巧:计算素数个数
|
2月前
|
Python
利用Python生成一个列表的所有子集
利用Python生成一个列表的所有子集
31 0
|
2月前
|
Python
Python找出素数
Python找出素数
27 0
|
2月前
|
存储 数据挖掘 数据处理
Python寻找素数
Python寻找素数
18 0