[蓝桥杯] 随意组合 python解法

小明被绑架到X星球的巫师W那里。

其时,W正在玩弄两组数据 (2 3 5 8) 和 (1 4 6 7)
他命令小明从一组数据中分别取数与另一组中的数配对,共配成4对(组中的每个数必被用到)。
小明的配法是:{(8,7),(5,6),(3,4),(2,1)}

巫师凝视片刻,突然说这个配法太棒了!

因为:
每个配对中的数字组成两位数,求平方和,无论正倒,居然相等:
87^2 + 56^2 + 34^2 + 21^2 = 12302
78^2 + 65^2 + 43^2 + 12^2 = 12302

小明想了想说:“这有什么奇怪呢,我们地球人都知道,随便配配也可以啊!”
{(8,6),(5,4),(3,1),(2,7)}

86^2 + 54^2 + 31^2 + 27^2 = 12002
68^2 + 45^2 + 13^2 + 72^2 = 12002

巫师顿时凌乱了。。。。。

请你计算一下,包括上边给出的两种配法,巫师的两组数据一共有多少种配对方案具有该特征。
配对方案计数时,不考虑配对的出现次序。
就是说:
{(8,7),(5,6),(3,4),(2,1)}

{(5,6),(8,7),(3,4),(2,1)}
是同一种方案。

import itertools
a = list(itertools.permutations([2, 3, 5, 8], 4))
b = list(itertools.permutations([1, 4, 6, 7], 4))
lis = [zip(a[i], b[i]) for i in range(len(a))]

ans = 0
for m in lis:
    s1, s2 = 0, 0
    for n in m:
        s1 += (n[0]*10+n[1])**2
        s2 += (n[1]*10+n[0])**2
    if s1 == s2:
        ans += 1
print(ans)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
蓝桥杯技能升级Python是指提升参赛者在蓝桥杯竞赛中使用Python编程的技能水平。 Python是一种高级编程语言,以其简洁易学、功能强大和跨平台的特点而广泛应用于软件开发、数据分析、人工智能等领域。在蓝桥杯竞赛中,Python是一种常用的编程语言之一,并被广大选手所青睐。 要提升蓝桥杯技能升级Python,首先需要掌握Python的基础知识,包括语法、数据类型、控制结构等。这些基础知识是编写Python程序的基石,只有牢固掌握才能让程序更加准确、高效。 其次,需要学习Python的常用库和模块。Python拥有丰富的第三方库,如NumPy、Pandas和Matplotlib等,这些库提供了很多方便的函数和工具,能够帮助参赛者更加高效地处理数据、进行可视化分析等。 另外,参赛者还可以通过参加相关的培训班或课程,结合实际项目进行实践,来提升自己在蓝桥杯竞赛中的Python编程能力。这些培训班和课程通常会涵盖更深入的Python知识和实际应用,能够帮助选手更好地理解和掌握Python的特性和技巧。 最后,参赛者还可以通过解决一些相关的编程题目来不断提升自己的技能。这些题目可以是蓝桥杯历年竞赛题目,也可以是其他在线编程题目。通过不断地练习,参赛者可以提高编程能力和解题思维,更好地应对蓝桥杯竞赛中的编程挑战。 总而言之,蓝桥杯技能升级Python需要掌握基础知识,学习常用库和模块,参加培训班或课程,进行实践项目,以及通过解题练习来提升自己的技能。只有不断地学习和实践,才能在蓝桥杯竞赛中取得好的成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值