package com.lanqiao.JavaB2019;
/**
* 试题D:数的分解
* @author com
* 结果:40785
*/
public class JavaD {
public static void main(String[] args) {
f();
}
public static int f() {
int count = 0;
for(int i=1;i<2000;i++) {
if(judge(i)) {
for(int j=1;i<2000 && i!=j;j++) {
if(judge(j)) {
for(int k=1;k<2000 && k!=j && k!=i;k++) {
if(judge(k)) {
if(i+j+k==2019) {
System.out.println(i+" "+j+" "+k);
count++;
}
}
}
}
}
}
}
System.out.println("count="+count);
return 0;
}
/*
* while循环每除以10判断一次最后的尾数是否为2或4
*/
public static boolean judge(int n){
while(n>0) {
if(n%10==2 || n%10==4) {
return false;
}
n/=10;
}
return true;
}
/*
* 判断正整数是否符合(不含2和4的值)
*/
public static boolean judge1(int n) {
//n等于2或者等于4直接返回false
if(n==2 || n==4) {
return false;
}
//最后一位为2或4直接返回false
if(n%10==2 || n%10==4) {
return false;
}
//当n为两位数时
if(n>=10 && n<=99) {
//第一位数为2或4返回false
if(n/10==2 || n/10==4) {
return false;
}
}
//当n为三位数时
if(n>=100 && n<=999) {
//第一位数为2或4返回false
if(n/100==2 || n/100==4) {
return false;
}
//第二位数为2或4返回false
if(n/10%10==2 || n/10%10==4) {
return false;
}
}
//当n为四位数时
if(n>=1000 && n<=9999) {
//第一位数为2或4返回false
if(n/1000==2 || n/1000==4) {
return false;
}
//第二位数为2或4返回false
if(n/100%10==2 || n/100%10==4) {
return false;
}
//第三位数为2或4返回false
if(n/10%10==2 || n/10%10==4) {
return false;
}
}
//如果都通过了则flag为true,返回flag
return true;
}
}