一、数的分解
原题链接:数的分解
1、题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18、1001+1000+18
被视为同一种。
2、思路解析
因为只是到2019,数值不大,直接暴力枚举即可。
3、AC代码
#include <iostream>
using namespace std;
bool check(int n) //(1)
{
int ret;
while(n)
{
ret = n % 10;
n /= 10;
if(ret == 2|| ret == 4)
return 0;
}
return 1;
}
int main()
{
int cnt = 0;
for(int i = 1;i<=2019;i++)
{
for(int j = i+1;j<=2019;j++)
{
int k = 2019-i-j;
if( check(i) && check(j) && check(k))
if(j<k)
cnt++;
}
}
cout<<cnt;
return 0;
}
4、代码解析
- (1) 写一个函数,用于判定 该整数是否含有 2、4
- (2) 从 i = 1开始暴力循环
- (3) 令 j = i+1 ,避免重复计算。