Advertisement
Guest User

Untitled

a guest
Nov 18th, 2011
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.58 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class MultiplesWithLimit {
  4.  
  5.     public String minMultiples(int N, int[] forbiddenDigits) {
  6.         boolean []canUse = new boolean[10];
  7.         boolean []was = new boolean[N];
  8.         Arrays.fill(canUse, true);
  9.         for (int t : forbiddenDigits) {
  10.             canUse[t] = false;
  11.         }
  12.         Queue<Integer> qRemainder = new LinkedList();
  13.         Queue<String> qNumber = new LinkedList();
  14.         for (int digit = 1; digit <= 9; ++digit) {
  15.             if (canUse[digit]) {
  16.                 qRemainder.add(digit % N);
  17.                 qNumber.add(Integer.toString(digit));
  18.                 was[digit % N] = true;
  19.             }
  20.         }
  21.         while (!qRemainder.isEmpty()) {
  22.             int rem = qRemainder.poll();
  23.             String prev = qNumber.poll();
  24.             if (rem == 0) {
  25.                 if (prev.length() >= 9) {
  26.                     String result = prev.substring(0, 3) + "..." + prev.substring(prev.length() - 3) + "(" + prev.length() + " digits)";
  27.                     return result;
  28.                 }
  29.                 else {
  30.                     return prev;
  31.                 }
  32.             }
  33.             for (int digit = 0; digit <= 9; ++digit) {
  34.                 if (canUse[digit]) {
  35.                     int newRemainder = (rem * 10 + digit) % N;
  36.                     if (was[newRemainder]) {
  37.                         continue;
  38.                     }
  39.                     qRemainder.add(newRemainder);
  40.                     qNumber.add(prev + Integer.toString(digit));
  41.                     was[newRemainder] = true;
  42.                 }
  43.             }
  44.         }
  45.         return "IMPOSSIBLE";
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement