题目:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
思路:
1.两个for循环遍历就够了,第三个数就等于2019-x-y
2.这三个数都不能包括2和4,用一个judge函数解决
3.要考虑到会出现重复的情况,因此我们遍历的时候一定要保证1<2<3
代码:
#include<iostream>
using namespace std;
int judge(int x)
{
while(x>0)
{
if(x%10 ==2 || x%10==4 )
{
return 0;
}
x = x/10;
}
return 1;
}
int cnt = 0;
int n =2019;
int main()
{
for(int i=1;i<=(int)n/3;i++)
{
if(judge(i)==0) continue;
for(int j=i+1;j<n;j++)
{
if(judge(j)==0) continue;
for(int k=j+1;k<n;k++)
{
if(judge(k)==0) continue;
if(i+j+k==2019)
cnt++;
}
}
}
cout<<cnt<<endl;
return 0;
}
结果:
40785