今天好水啊啊啊

目录

文章目录

前言

一、python列表的常规操作

输入规格:

输出规格:

二、一些有点“棘手”的问题

1.比如:哥德巴赫猜想

输入格式:

输出格式:

2.python的全排列

输入格式:

输出格式:

前言

事先总结:今天c语言学习约等于0

一、python列表的常规操作

7-3 玩得开心数字

请注意,123456789数字是一个 9 位数字,由 1 到 9 之间的数字完全组成,没有重复。加倍,我们将得到246913578,这恰好是另一个9位数字,恰好由1到9的数字组成,只是以不同的排列方式。检查一下结果,如果我们再次加倍!

现在,您应该检查此属性是否还有更多数字。也就是说,将给定数字加倍k数字,您将判断生成的数字是否仅由原始数字中的数字排列组成。

输入规格:

每个输入包含一个测试用例。每个事例都包含一个不超过 20 位数字的正整数。

输出规格:

对于每个测试用例,如果输入数字加倍得到的数字仅由原始数字的排列组成的数字,请首先打印一行"是";如果不是,则为"否"。然后在下一行中,打印双倍的数字。

思考:看到题干,心里只有一句:人生苦短我学python

a=eval(input())
b=a*2
c=list(str(a))
d=list(str(b))
c.sort()
d.sort()
if c==d:
    print("yes")
    print(b)
else:
    print("no")
    print(b)

二、一些有点“棘手”的问题

1.比如:哥德巴赫猜想

                                                        7-14 哥德巴赫猜想

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。 比如:24=5+19,其中5和19都是素数。 本实验的任务是设计一个程序,验证5000以内的偶数都可以分解成两个素数之和。

输入格式:

输入在一行中给出一个(2, 5000]范围内的偶数N。

输出格式:

在一行中按照格式“N = p + q”输出N的素数分解,其中p \le≤ q均为素数。 又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

思路:其实我思考的大致方向是对的,但关于为什么我自己写不对,这是一个悲伤的故事了呜呜呜来看:

​
def prime(p):
    if p<=1:
        return False
    else:
        for i in range(2,int(p**0.5)+1):
            if p%i==0:
                return False
        return True
a=[]
n=eval(input())
for j in range(n):
    if prime(j):
        a.append(j)
d=[]
for i in a:
    for k in a:
        if n==i+k:
            d.append(i)
            d.append(k)
            break
        break//关于我怎么也用不好双重for循环里的break这件事,请小点声笑呜呜呜
            
print(f"{n} = {d[0]} + {d[1]}")

​

这明显是错的,不知道为啥,啥也没有,如果有哪位看出来错了,请dd我

然后我经过“不懈努力”,好吧,就是去博客里搜了看看,得出来了不需要双重for的正解如下,至此这道题算是过了......

def prime(p):
    if p<=1:
        return False
    else:
        for i in range(2,int(p**0.5)+1):
            if p%i==0:
                return False
        return True
n=eval(input())
for i in range(2,int(n/2)+1):
    if prime(i) and prime(n-i):
        print(n, "=", i, "+", n - i)
        break

2.python的全排列

我丢,其实我想到了python也会有全排列函数,架不住比c里的更难用啊

                                                7-11 输出全排列

请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。

输入格式:

输入给出正整数n(<10)。

输出格式:

输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1​,a2​,⋯,an​排在序列b1​,b2​,⋯,bn​之前,如果存在k使得a1​=b1​,⋯,ak​=bk​ 并且 ak+1​<bk+1​。

import itertools
n=eval(input())
a=[str(i) for i in range(1,n+1)]
s=""
s=s.join(a)
for i in itertools.permutations(s):
    print (''.join(i))
 

没别的毛病,就死记着呗


总结

这样一看,我今天是啥也没学呢,不说了,哭一会去,顺便再做会python的emoji表情呜呜呜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值