[3.16]竞赛入门经典,习题2-6
2016-03-16 08:25
176 查看
题目:1——9,九个数字,组成三个三位数abc,def,ghi。
abc:def:ghi=1:2:3;1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次。
条件一:(想出来了)
i 最小只能是123, 最大只能是329(因为最大数字只能是987)
条件2:(思路)
1~9加起来真能是45, 1~9乘起来只能是362880
所以我们可以将前面的i, j, k分别分解出来的9位数字相加, 相乘,
看最后的结果是不是45,362880
具体代码
abc:def:ghi=1:2:3;1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次。
条件一:(想出来了)
for(i = 123; i <= 329; i++) { j = i * 2; //i的2倍 k = i * 3; //i的3倍 }
i 最小只能是123, 最大只能是329(因为最大数字只能是987)
条件2:(思路)
1~9加起来真能是45, 1~9乘起来只能是362880
所以我们可以将前面的i, j, k分别分解出来的9位数字相加, 相乘,
看最后的结果是不是45,362880
具体代码
//用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。 #include <stdio.h> void result(int num, int &result_add, int &result_mul) { int i, j, k; i = num / 100; //百位 j = num / 10 % 10; //十位 k = num % 10; //个位 result_add += i + j + k; //分解出来的位数相加 result_mul *= i * j * k; //相乘 } int main() { int i, j, k; int result_add, result_mul; for(i = 123; i <=329; i++) { j = i * 2; k = i * 3; result_add = 0; result_mul = 1; result(i, result_add, result_mul); result(j, result_add, result_mul); result(k, result_add, result_mul); if(result_add == 45 && result_mul == 362880) printf("%d %d %d\n", i, j, k); } return 0; }http://zhidao.baidu.com/link?url=h1uRcPh0hB1vu-A09km4c5kilDoAwFgOrNCDG3kz8KxB3avgEhdXsiBj-N2pyisqcSHyp3-CsG-C-0LjzBQOGVhZSqfEPDBYq2f3z19RxiG
相关文章推荐
- IMP-00032:SQL 语句超过缓冲区长度的问题解决
- Docker 入门到实践笔记2
- POJ 3061 Subsequence (尺取)
- 2016写点blog
- 电子邮件营销在数字营销浪潮中扮演关键角色
- bzoj2434: [Noi2011]阿狸的打字机
- HDOJ 1220 Cube (数学)
- Windows Server 2008 R2配置JSP网站无法访问
- HDOJ 1027 Ignatius and the Princess II (DFS全排列)
- iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值
- CSS 有趣的边框
- PAT 1026
- PAT 1026
- Http协议
- 如何配置android的adb环境变量
- 2016SDAU课程练习一1006
- 如何配置android的adb环境变量
- [BZOJ 1576]安全路经Travel
- STM32 串口 简介
- 十五周 项目1 工资数据的输入