返回题解分享
讨论 / 题解分享/ 帖子详情

数的分解

#include<bits/stdc++.h>
using namespace std;

bool check(int num) {
while(num>0) {
if(num%10==2||num%10==4) {
return false;
}
num/=10;
}
return true;
}

int main() {


int count=0;

for(int i=1;i<2019;i++) {

//剪枝:如果i已经不合法,没必要进入下一层
if(!check(i)) continue;

//去重:j从i+1开始,保证j>i
for(int j=i+1;j<2019;j++) {
if(!check(j)) continue;

//去重:k从j+1开始,保证k>j,同时利用数学关系k=2019-i-j,不需要第三层循环
int k=2019-i-j;

//必须保证k>j,否则会出现重复或者数字相同的情况
if(k<=j) break;

if(check(k)) {
count++;
}
}
}

cout<<count<<endl;
return 0;
}



0 回复 0 转发 0 喜欢 10 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!