本题需要注意的点在于,如何处理数字10,因为 10 mod 10 等于 0,还需要减去一个1。
public class Main {
public static void main(String[] args) {
int[] arr = new int[10];
//为数组赋值2021
for (int i = 0; i < arr.length; i++) {
arr[i] = 2021;
}
int temp = 0; //临时变量
int count = 0; //计数器
for (int i = 1; i < 100000; i++) {
temp = i;
while (temp != 0) {
if (temp % 10 == 0) { //100 mod 10 等于0,此时不减1,经过判断,执行100 / 10
if(temp == 10){ //10 mod 10等于0,还需要减去一个1
arr[1] -= 0;
}
arr[0] -= 1;
}
if (temp % 10 == 1) {
arr[1] -= 1;
}
if (temp % 10 == 2) {
arr[2] -= 1;
}
if (temp % 10 == 3) {
arr[3] -= 1;
}
if (temp % 10 == 4) {
arr[4] -= 1;
}
if (temp % 10 == 5) {
arr[5] -= 1;
}
if (temp % 10 == 6) {
arr[6] -= 1;
}
if (temp % 10 == 7) {
arr[7] -= 1;
}
if (temp % 10 == 8) {
arr[8] -= 1;
}
if (temp % 10 == 9) {
arr[9] -= 1;
}
if(arr[i % 10] == 0){
return;
}
if(temp == 10){ //如果temp等于10时,需要判断arr[1]是否为0,原因如上
if(arr[1] == 0){
return;
}
}
if(arr[temp % 10] == 0){
return;
}
temp /= 10;
}
System.out.println(++count);
}
}
}
最终结果3180!