笔试-九宫格三阶积幻方

应用

给定9个不同数字,在九宫格实现三阶积幻方,即:九宫格的每行、每列、每条对角线的三个数之积相等。

输出所有满足要求的排列,并且做升序排序,即:

排列1:a1~a9,

排列2:b1~b9,

若a[i]<b[i],则排列1<排列2。

时间限制:2000ms、内存限制:512MB。

实现

python 复制代码
strs = input("请输入9个不同数字,以空格分隔:").split()
nums = [int(i) for i in strs]
nums.sort()

center = nums[4]
p = nums[0] * center * nums[8]
new = nums[0:4] + nums[5:9]

A = []
for i in range(0, 3):
    r = []
    for j in range(0, 3):
        r.append(0)
    A.append(r)
A[1][1] = center

result = []
# [
# [x1, x2, 0], 
# [0, C, 0], 
# [0, y2, y1]
# ]
for i in range(0, len(new)):
    
    A[0][0] = new[i]
    A[2][2] = new[len(new)-1-i]

    for j in range(0, len(new)):
        
        if new[j] != A[0][0]:
            if new[j] != A[2][2]:
             
                A[0][1] = new[j]
                A[2][1] = new[len(new)-1-j]

                x02 = p / A[0][0] / A[0][1]
                x20 = p / A[2][1] / A[2][2]
                x10 = p / A[0][0] / x20
                x12 = p / A[2][2] / x02

                if int(x02) in nums:
                    if int(x20) in nums:
                        if int(x10) in nums:
                            if int(x12) in nums:
                                A[0][2] = int(x02)
                                A[2][0] = int(x20)
                                A[1][0] = int(x10)
                                A[1][2] = int(x12)
                                # print(A)

                                temp = []
                                for m in range(0, 3):
                                    for n in range(0, 3):
                                        temp.append(A[m][n])
                                # print(temp)
                                result.append(temp)
# print(result)
for i in result:
    print(i)
powershell 复制代码
请输入9个不同数字,以空格分隔:2 9 12 36 6 1 3 4 18
[2, 9, 12, 36, 6, 1, 3, 4, 18]
[2, 36, 3, 9, 6, 4, 12, 1, 18]
[3, 4, 18, 36, 6, 1, 2, 9, 12]
[3, 36, 2, 4, 6, 9, 18, 1, 12]
[12, 1, 18, 9, 6, 4, 2, 36, 3]
[12, 9, 2, 1, 6, 36, 18, 4, 3]
[18, 1, 12, 4, 6, 9, 3, 36, 2]
[18, 4, 3, 1, 6, 36, 12, 9, 2]

请输入9个不同数字,以空格分隔:75 36 10 4 30 225 90 25 12
[10, 36, 75, 225, 30, 4, 12, 25, 90]
[10, 225, 12, 36, 30, 25, 75, 4, 90]
[12, 25, 90, 225, 30, 4, 10, 36, 75]
[12, 225, 10, 25, 30, 36, 90, 4, 75]
[75, 4, 90, 36, 30, 25, 10, 225, 12]
[75, 36, 10, 4, 30, 225, 90, 25, 12]
[90, 4, 75, 25, 30, 36, 12, 225, 10]
[90, 25, 12, 4, 30, 225, 75, 36, 10]
相关推荐
MOMO陌染10 小时前
Python 饼图入门:3 行代码展示数据占比
后端·python
vvoennvv11 小时前
【Python TensorFlow】 TCN-GRU时间序列卷积门控循环神经网络时序预测算法(附代码)
python·rnn·神经网络·机器学习·gru·tensorflow·tcn
自学互联网11 小时前
使用Python构建钢铁行业生产监控系统:从理论到实践
开发语言·python
无心水12 小时前
【Python实战进阶】7、Python条件与循环实战详解:从基础语法到高级技巧
android·java·python·python列表推导式·python条件语句·python循环语句·python实战案例
xwill*12 小时前
RDT-1B: A DIFFUSION FOUNDATION MODEL FOR BIMANUAL MANIPULATION
人工智能·pytorch·python·深度学习
陈奕昆12 小时前
n8n实战营Day2课时2:Loop+Merge节点进阶·Excel批量校验实操
人工智能·python·excel·n8n
程序猿追12 小时前
PyTorch算子模板库技术解读:无缝衔接PyTorch模型与Ascend硬件的桥梁
人工智能·pytorch·python·深度学习·机器学习
秋邱12 小时前
高等教育 AI 智能体的 “导学诊践” 闭环
开发语言·网络·数据库·人工智能·python·docker
组合缺一12 小时前
Solon AI 开发学习6 - chat - 两种 http 流式输入输出
python·学习·http
沐浴露z13 小时前
为什么使用SpringAI时通常用Builder来创建对象?详解 【Builder模式】和【直接 new】的区别
java·python·建造者模式