通过对3个数的排序要求巧妙避开数据相同不算,数据顺序不同也不算的要求
剩下的直接暴力枚举。
#include <stdio.h>
#include <stdlib.h>
int AC(int n);
int main(void){
int i,j,k; //循环变量
int n=0; //储存种数
for(i=1; i<=2019; i++){
if(AC(i)) //排除含2,4的数
for(j=1; j<=2019-i; j++){
if(AC(j)) //排除含2,4的数
for(k=1; k<=2019-i-j; k++){ //排除含2,4的数
if(AC(k)&&(i+j+k)==2019&&i>j&&j>k)n++;//排除顺序不同,数字相等的情况
//printf("%d %d %d\n",i,j,k);
}
}
}
printf("%d",n);
}
int AC(int n){ //按位查找2,4
int x;
x=n%10; //不含返回1
if(n==0) return 1;
if(x==2||x==4){
return 0; //含2,4返回0
}
else return AC(n/10);
}
输出:
40785