2019第十届蓝桥杯C/C++ B组省赛题解 四、数的分解

版权声明:本文为博主原创文章,未经博主允许不得转载,欢迎添加友链。 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;
}

猜你喜欢

转载自blog.csdn.net/qq_42835910/article/details/89435184