#include <iostream>
using namespace std;
int main()
{
/*
实践三:
有一个三位数,
个位数字比百位数字大, 而百位数字有比十位数字大,
并且各位数字之和等于各位数字相乘之积,
求此三位数.
*/
// 实现方法1
// 从100到999循环
for (int i = 100; i < 1000; i++) {
int a = i % 10;//获取个位数, 例如: 123%10得3
int b = i % 100 / 10;//获取十位数, 例如: 123%100得23, 再除以10得2.3, int取值为2
int c = i / 100;//获取百位数, 例如: 123除以100得1.23, int取值为1
//判断条件: 个位数字比百位数字大,且百位数字比十位数字大
if(a > c && c > b){
int sum = a + b + c;//获取各位数字之和
int product = a * b * c;//获取各位数字之积
//判断条件: 各位数字之和等于各位数字相乘之积
if(sum == product){
cout << "符合条件的三位数: " << i << endl;
}
}
}
// 实现方法2
for (int i = 1; i <= 9; i++) {//百位数, 最小的三位数为100, 所以从百位数从1开始
for (int j = 0; j <= 9; j++) {//十位数
for (int k = 0; k <= 9; k++) {//个位数
//判断条件: 个位数字比百位数字大,且百位数字比十位数字大
if(k > i && i > j){
int sum = i + j + k;//获取各位数字之和
int product = i* j * k;//获取各位数字之积
//判断条件: 各位数字之和等于各位数字相乘之积
if(sum == product){
cout << "符合条件的三位数: " << (i * 100 + j * 10 + k) << endl;
}
}
}
}
}
return 0;
}