版权声明:本文为博主原创文章,未经博主允许不得转载,欢迎添加友链。 https://blog.csdn.net/qq_42835910/article/details/89435184
四、数的分解
把2019 分解成3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和 1001+1000+18 被视为同一种。思路:
让i < j < k, 然后判断i, j, k是否含2和4就行了
#include <iostream>
using namespace std;
bool judge(int x){
while(x){
int n = x%10;
if( n == 2 || n == 4) return false;
x /= 10;
}
return true;
}
int main(int argc, char** argv) {
int n = 2019;
long long ans = 0;
for(int i = 1; i < n; i++){
if(!judge(i)) continue;
for(int j = i+1; j < n-i-j; j++){ // j < k;
int k = n-i-j;
if(judge(j) && judge(k)) ans++;
}
}
cout<< ans<< "\n";
return 0;
}