给一个数不包含前导0的数n,现在将n的各位数字的顺序重组,在这些数中,有多少个数是m的倍数? 例如112,重组后有三个数:112,121,211

区块链毕设网qklbishe.com为您提供问题的解答

给一个数不包含前导0的数n,现在将n的各位数字的顺序重组,在这些数中,有多少个数是m的倍数?
例如112,重组后有三个数:112,121,211

暴力回溯   超时  这数据太大了    import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner;  public class Main{     static int count = 0;     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         String str = sc.nextLine();         String[] s = str.split(" ");         char[] ch = s[0].toCharArray();         Arrays.sort(ch);         int m = Integer.parseInt(s[1]);         //int count = 0;         boolean[] used = new boolean[ch.length];         ArrayList<Character> path = new ArrayList<>();         backtracking(ch, used, path, m);         System.out.println(count);     }     public static void backtracking(char[] ch, boolean[] used, ArrayList<Character> path, int m) {         if(path.size() == ch.length) {             if(path.get(0) == '0') return;             StringBuilder bui = new StringBuilder();             for(Character c : path) {                 bui.append(c);             }              int ss = Integer.parseInt(bui.toString());             if(ss % m == 0) count++;             //System.out.println(count);             return;         }         for (int i = 0; i < ch.length; i++) {             if (i > 0 && ch[i] == ch[i - 1] && used[i - 1] == false) {                 continue;             }             //如果同⼀树⽀nums[i]没使⽤过开始处理             if (used[i] == false) {                 used[i] = true;//标记同⼀树⽀nums[i]使⽤过,防止同一树枝重复使用                 path.add(ch[i]);                 backtracking(ch, used, path, m);                 path.remove(path.size() - 1);//回溯,说明同⼀树层nums[i]使⽤过,防止下一树层重复                 used[i] = false;//回溯             }         }     } }

编辑于 今天 16:38:44

以上就是关于问题给一个数不包含前导0的数n,现在将n的各位数字的顺序重组,在这些数中,有多少个数是m的倍数?
例如112,重组后有三个数:112,121,211的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 给一个数不包含前导0的数n,现在将n的各位数字的顺序重组,在这些数中,有多少个数是m的倍数? 例如112,重组后有三个数:112,121,211