题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
这题暴力完事了,要解决的是怎么确定同一种呢,我们只要保证我们遍历的时候按照大小顺序来遍历就不会重复了,代码如下所示:
#include <bits/stdc++.h>
using namespace std;
bool check(int n)
{
while(n)
{
if(n%10==2 || n%10==4) return false;
n/=10;
}
return true;
}
int main()
{
// 请在此输入您的代码
int ans=0;
for(int i=1;i<=2019;++i)
{
if(!check(i)) continue;
for(int j=i+1;j<=2019;++j)
{
if(!check(j)) continue;
for(int k=j+1;k<=2019;++k)
{
if(check(k)&&i+j+k==2019) ans++;
}
}
}
cout<<ans;
// cout<<40785;
return 0;
}
答案是40785