题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 20192019 分解成 33 个各不相同的正整数之和,并且要求每个正整数都不包含数字 22 和 44,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
运行限制
最大运行时间:1s
最大运行内存: 128M
暴力破解,当i<j<k的时候,可以保证唯一性,达到去重的效果。
另外,去掉第三轮循环,将其换为2019-i-j,巧妙的降低了时间复杂度👀
import java.util.Scanner;
public class P3 {
public static void main(String[] args) {
int input=2019;
int res=0;
for (int i=1;i<2019;i++){
for (int j=1;j<2019;j++){
int k=2019-i-j;
if(i<j&&j<k){
if (judge(i)&&judge(j)&&judge(k)){
res++;
}
}
}
}
System.out.println(res);
}
public static boolean judge(int n){
while (n!=0){
int a=n%10;
if (a==2||a==4){
return false;
}
n=n/10;
}
return true;
}
}
