随意组合 C语言
发布日期:2022-03-03 01:57:17 浏览次数:1 分类:技术文章

本文共 920 字,大约阅读时间需要 3 分钟。

问题描述:小明被绑架到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)}是同一种方案。

测试实例及与运行结果:

源程序清单:

#include
#include
using namespace std;int main(){ int a[4]={2,3,5,8},b[4]={1,4,6,7}; int c[4],d[4],ans; ans=0; do{ for(int i=0;i<4;i++){ c[i]=a[i]*10+b[i]; d[i]=a[i]+b[i]*10; }int sum1=0,sum2=0; for(int i=0;i<4;i++){ sum1+=c[i]*c[i]; sum2+=d[i]*d[i]; }if(sum1==sum2){ ans++; } }while(next_permutation(b,b+4)); printf("%d",ans); return 0;}

 

 

转载地址:https://blog.csdn.net/qq_52381483/article/details/119710751 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:MATLAB解决错误使用*BLAS加载错误,找不到指定模块
下一篇:Android | APP设置启动页(Java)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年05月01日 21时27分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章