题面
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
题解
枚举
从小到大枚举三个数 ,三个数都大于 0,且 ,再判断三个数中是否存在 2 和 4,都不存在,则答案加一即可。
答案:
40785
代码
#include<bits/stdc++.h>
using namespace std;
int n = 2019, s = 0;
bool canUse(int x) {
while (x) {
int t = x % 10;
if (t == 2 || t == 4) return false;
x /= 10;
}
return true;
}
int main() {
for (int i = 1; i <= n; ++i) {
if (!canUse(i)) continue;
for (int j = i + 1; j <= n; ++j) {
if (!canUse(j)) continue;
int k = n - j - i;
if (k > j && canUse(k)) s++;
}
}
cout << s << endl;
return 0;
}
标题: | 2019年第十届蓝桥杯省赛-D.数的分解 |
---|---|
链接: | https://www.fightingok.cn/detail/214 |
更新: | 2022-09-18 22:48:51 |
版权: | 本文采用 CC BY-NC-SA 3.0 CN 协议进行许可 |