试题 D: 数的分解
本题总分:10 分
问题描述
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包
含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和
1001+1000+18 被视为同一种。
解题思路:
暴力破解法
把所有约束条件写出来筛选,暴力循环破解
#include<iostream>
using namespace std;
int qw(int s)
{
if (s / 1000 != 2 && s / 10 % 10 != 2 && s / 100 % 10 != 2 && s % 10 != 2 &&
s / 1000 != 4 && s / 10 % 10 != 4 && s / 100 % 10 != 4 && s % 10 != 4)
return 1;
else
return 0;
}
int main()
{
int sum = 0;
for (int i = 1; i<2019; i++)
for (int j = 1; j<2019; j++)
for (int k = 1; k <2019; k++)
if (i + j + k == 2019 && qw(i) && qw(j) && qw(k) && i != j&&j != k&&i != k)
{
sum++;
}
cout << sum/6 << endl;
}