【lg洛谷】P1008三连击 #C语言

【lg洛谷】P1008三连击 #C语言_第1张图片【lg洛谷】P1008三连击 #C语言_第2张图片

 


暴力解法:

#include
int Sum(int x)			//拆解三位数并求和
{
	int re = x / 100 + x / 10 % 10 + x % 10;
	return re;
}
int Mlt(int x)		        //拆解三位数并求积
{
	int re= (x / 100) * (x / 10 % 10) * (x % 10);
	return re;
}




int main()
{
	int a;

	int sumi = 0;
	int mlti = 1;
	for (int i = 1; i < 10; i++){		//求1+2+……+9=sumi
		sumi += i;
	}
	for (int i = 1; i < 10; i++){		//求1*2*……*9=mlti
		mlti *= i;
	}

	

	for (a = 123; a <= 333; a++) {
		int b = a * 2;
		int c = a * 3;;		                //对应三个数
		int sumpart = Sum(a) + Sum(b) + Sum(c);
		int mltpart = Mlt(a) * Mlt(b) * Mlt(c);
		if(sumpart==sumi && mltpart==mlti) {
			printf("%d %d %d\n", a, b, c);
		}
	}
	return 0;
}

 


收获:

1.如何拆解一个三位数x

百位数:x / 100

十位数:x / 10 % 10

个位数:x % 10      

 

2.如何解决1~9没有重复利用的情况下,组成3个3位数

(1)验证每位上的数字的和

(2)验证每位上的数字的乘积

你可能感兴趣的:(C-题解)