描述
H国的身份证号码是一个N位的正整数(首位不能是0)。此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K。
例如对于K=5, 101、211、210等都是合法的号码,而106、123、421等都是非法的号码。
给定一个正整数N以及K,请从小到大输出所有合法的号码。
输入
两个整数N和K。
对于80%的数据,1 ≤ N ≤ 6。
对于100%的数据,1 ≤ N ≤ 9,1 ≤ K ≤ 5。
输出
按从小到大的顺序输出所有合法的N位号码,每个号码占一行。
样例输入
2 4
样例输出
10
11
12
13
14
20
21
22
30
31
40
41
import java.util.*;
public class Main {
static int n, k;
static int sum = 0;
static void dfs(int x, int step, int num) {
if (step == n) {
System.out.println(sum);
return;
}
for (int i = x; i <= k; i++) {
int last = num;
if (i * last <= k) {
sum = sum * 10 + i;
dfs(0, step + 1, i);
sum = (sum - i) / 10;
}
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
k = in.nextInt();
sum = 0;
dfs(1, 0, 1);
}
}
来源:CSDN
作者:아름다운 밤
链接:https://blog.csdn.net/qq_43457125/article/details/104212843