小言_互联网的博客

python 51Nod 1956

366人阅读  评论(0)

1956 费马大定理扩展

  1. 1.0 秒
  2.  
  3. 131,072.0 KB
  4.  
  5. 5 分
  6.  
  7. 1级题

费马大定理:对于 n>2n>2 ,不存在整数 x,y,z>1x,y,z>1 使得 xn=yn+znxn=yn+zn 满足。

但是对于 n=3n=3 的时候,是有可能存在 o,r,s,t>1o,r,s,t>1 ,使得 o3=r3+s3+t3o3=r3+s3+t3 成立的(比如 123=63+83+103123=63+83+103 )。

现在给定一个整数N,请列出所有满足条件的 {o,r,s,t}{o,r,s,t} 组合,其中 1<o≤N,1<r<s<t1<o≤N,1<r<s<t 。

 收起

输入

单组测试数据。
第一行有一个整数N(1<N<=100)。

输出

输出所有可能的组合,按照{o,r,s,t}的字典序从小到大输出。
输出格式参照样例。如果没有找到合法解输出OMG。

输入样例

样例输入1
24

输出样例

样例输出1
(6,3,4,5)
(12,6,8,10)
(18,2,12,16)
(18,9,12,15)
(19,3,10,18)
(20,7,14,17)
(24,12,16,20)

解题思路:算是python输出和for循环的联系题目吧。

注意输出的时候{}里边的内容被format里边的代替。

for循环的range是左闭右开。

from math import *

def mysolve( b ):
    res = []
    for i in range(6, b):
        for j in range(2, i-1):
            for k in range(j, i-1):
                for l in range(k, i):
                    if i*i*i == j*j*j + k*k*k + l*l*l:
                        res.append((i, j, k, l))
    return res


n = input()
n = int(n)
ans = mysolve(n+1)
for i in range(0,len(ans)):
    print('({},{},{},{})' .format(ans[i][0], ans[i][1], ans[i][2], ans[i][3]))
if len(ans) == 0 :
    print("OMG")

 


转载:https://blog.csdn.net/weixin_40894017/article/details/101458420
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场