鱼C论坛

 找回密码
 立即注册
查看: 757|回复: 9

[已解决]完美立方数一道题9行代码如何写出?

[复制链接]
发表于 2020-4-30 17:55:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看题目- -
最佳答案
2020-4-30 20:50:53
不用函数
from itertools import combinations as cb
for i in sorted([(i[3],(i[0],i[1],i[2])) for i in cb(range(2,24+1),4) if i[0]**3+i[1]**3+i[2]**3==i[3]**3]):
    print('Cube =',i[0],',', 'Triple =', (i[1][0],i[1][1],i[1][2])) 
QQ图片20200430175439.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-30 18:05:32 | 显示全部楼层
from sys import stdout
count=int(input())+1

for a in range(1,count):
    for b in range(1,count):
        for c in range(1,count):
            for d in range(1,count):
                if a*a*a==b*b*b+c*c*c+d*d*d:
                    stdout.write(f'Cube = {a},Triple = ({b},{c},{d})\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 18:11:59 | 显示全部楼层
#include<stdio.h>

int main(){
    int a,b,c,d,count;
    scanf("%d",&count);

    for(a=1;a<=count;a++){
        for(b=a;b<=count;b++){
            for(c=b;c<=count;c++){
                for(d=c;d<=count;d++){
                    if(a*a*a==b*b*b+c*c*c+d*d*d){
                        printf('Cube = %d,Triple = (%d,%d,%d)\n',a,b,c,d);
                    }
                }
            }
        }
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 18:24:33 | 显示全部楼层
n = int(input())
n += 1
iden = []

for a in range(2, n):
    for b in range(2, n):
        for c in range(2, n):
            for d in range(2, n):
                (print(f'Cube = {a},Triple=({b},{c},{d})'), iden.append(sorted((a, b, c, d)))) if (a ** 3 == b ** 3 + c ** 3 + d ** 3) and (sorted((a, b, c, d)) not in iden) else 0

或者精简一点:
n, iden = int(input()) + 1, []

for a in range(2, n):
    for b in range(2, n):
        for c in range(2, n):
            for d in range(2, n):
                (print(f'Cube = {a},Triple=({b},{c},{d})'), iden.append(sorted((a, b, c, d)))) if (a ** 3 == b ** 3 + c ** 3 + d ** 3) and (sorted((a, b, c, d)) not in iden) else 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 20:15:39 | 显示全部楼层
zltzlt 发表于 2020-4-30 18:24
或者精简一点:

大佬,你是神!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 20:39:32 | 显示全部楼层
from itertools import combinations as cb
def f(N):
    L=[]
    for i in cb(range(2,N+1),4):
        if i[0]**3+i[1]**3+i[2]**3==i[3]**3:
            L.append((i[3],(i[0],i[1],i[2])))
    L.sort(key=lambda i:i[0])
    for i in L:
        print('Cube =',i[0],',', 'Triple =', (i[1][0],i[1][1],i[1][2]))  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 20:48:59 | 显示全部楼层
简化一下
from itertools import combinations as cb
def f(N):
    for i in sorted([(i[3],(i[0],i[1],i[2])) for i in cb(range(2,N+1),4) if i[0]**3+i[1]**3+i[2]**3==i[3]**3]):
        print('Cube =',i[0],',', 'Triple =', (i[1][0],i[1][1],i[1][2])) 
f(24) 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 20:50:53 | 显示全部楼层    本楼为最佳答案   
不用函数
from itertools import combinations as cb
for i in sorted([(i[3],(i[0],i[1],i[2])) for i in cb(range(2,24+1),4) if i[0]**3+i[1]**3+i[2]**3==i[3]**3]):
    print('Cube =',i[0],',', 'Triple =', (i[1][0],i[1][1],i[1][2])) 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-30 21:27:11 | 显示全部楼层
本帖最后由 李子豪 于 2020-4-30 21:39 编辑
x = int(input())
for a in range(2,x+1):    
    for b in range(2,a):
        for c in range(b,a):
            for d in range(c,a):
                if pow(a,3) == pow(b,3)+pow(c,3)+pow(d,3):  
                    print("Cube = {},Triple = ({},{},{})".format(a,b,c,d))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 21:45:35 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2020-4-30 18:24
或者精简一点:

……只是把赋值的部分精简了一下
好叭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 00:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表