题目描述
把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和1001+1000+18 被视为同一种。
代码如下:
#include <iostream>
#include <sstream>
using namespace std;bool check(int x) {stringstream ss;ss << x;string str;ss >> str;for (int i = 0; i < str.size(); i++) {if (str[i] == '2' || str[i] == '4')return false;}return true;
}int main() {ios::sync_with_stdio(false);cin.tie(0);int ans = 0;for (int i = 1; i * 3 <= 2019; i++)for (int j = i + 1; i + j * 2 <= 2019; j++) {int k = 2019 - i - j;if (k <= j)continue;if (check(j) && check(i) && check(k)) {ans++;}}cout << ans << endl;return 0;
}