首页 > 分享 > 1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。

1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。

题目:用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。

开始我选择用简单又粗暴的方法做,再仔细读题后发现是有技巧的,九个数加起来是45,相乘是362880,这两个数是不变的,所以可以根据这两个条件来求

#include<iostream>

#include<cstdio>

using namespace std;

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 %dn", i, j, k);

}

return 0;

}

还有一种做法,将abcdefghi用字符串存起来,再进行比较,存在1到9就输出abc,def,ghi

#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

int main(int argc, const char * argv[])

{

int n, i, j;

char a[10];

for(n = 123; n < 330; n++)

{

sprintf(a, "%d", n * 1000000 + n * 2 * 1000 + n * 3);

for(j = 0, i = '1'; i <= '9'; memchr(a, i++, 9) && j++);

if (j == 9)

{

printf("%d %d %d n", n, n * 2, n * 3);

}

}

return 0;

}

相关知识

算法竞赛入门经典笔记—第二章
几种常用植物病原细菌分子检测方法
玫瑰花数 一个四位数等于各位数字的四次方之和,则为玫瑰花数。如:1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4
如图,已知Rt△ABC的直角边AC与Rt△DEF的直角边DF在同一条直线上,且AC=60c,BC=45cm,DF=6cm,EF=8cm.现将点C与点F重合,再以4cm/s的速度沿C方向移动△DEF;同时,点P从点A出发,以5cm/s的速度沿AB
MOOC —— Python语言基础与应用 by 北京大学 第六章 计算和控制流(二)
C语言:输出所有的水仙花数
LeetCode 1
【f(X)={X^2+4x—2,x>=0X^2—4x—2,x】
1.字符串详解
JavaScript写打印水仙花数(三位数),(153=1*1*1+5*5*5+3*3*3)每位数字的立方和等于等于该数即水仙花数,打印出所有水仙花数。

网址: 1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。 https://m.huajiangbk.com/newsview916920.html

所属分类:花卉
上一篇: 水培植物常见问题解答:如何解决水
下一篇: 高密度澄清池水质异常和处理.pp