头像

Cyan

四川成都

深度强化学习炼丹师

2019年第十届蓝桥杯省赛-D.数的分解

2019年第十届蓝桥杯省赛-D.数的分解

2022-03-23 · 51次阅读 · 原创 · 数据结构与算法

原题链接

题面

把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?

注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。

题解

枚举

从小到大枚举三个数 i,j,ki, j, k,三个数都大于 0,且 i<j<ki < j < k,再判断三个数中是否存在 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 协议进行许可