Advertisement
Nickpips

Untitled

Apr 9th, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.02 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.PrintWriter;
  4. import java.math.BigInteger;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.Random;
  8. import java.util.Scanner;
  9.  
  10. public class CoinJam {
  11.     public static void main(String[] args) throws FileNotFoundException {
  12.         Scanner in = new Scanner(System.in);
  13.         // PrintWriter out = new PrintWriter(System.out);
  14.         // Scanner in = new Scanner(new File("\\in"));
  15.         PrintWriter out = new PrintWriter(new File("\\out"));
  16.  
  17.         int T = in.nextInt();
  18.         in.nextLine();
  19.         for (int t = 1; t <= T; t++) {
  20.             out.print("Case #" + t + ":");
  21.  
  22.             out.println();
  23.  
  24.             Random r = new Random();
  25.             int N = in.nextInt();
  26.             int J = in.nextInt();
  27.  
  28.             StringBuilder coin = new StringBuilder("");
  29.             coin.ensureCapacity(N);
  30.  
  31.             ArrayList<String> coins = new ArrayList<String>();
  32.             while (coins.size() < J) {
  33.                 boolean works = true;
  34.                 for (int i = 0; i < N; i++) {
  35.                     if (i == 0 || i == N - 1)
  36.                         coin.append("1");
  37.                     else {
  38.                         coin.append(r.nextInt() % 2 == 0 ? "1" : "0");
  39.                     }
  40.                 }
  41.  
  42.                 if (coins.contains(coin.toString()))
  43.                     continue;
  44.                 System.out.println(coins.size());
  45.  
  46.                 int[] divisors = new int[9];
  47.                 for (int i = 2; i <= 10; i++) {
  48.                     BigInteger num = new BigInteger(coin.toString(), i);
  49.  
  50.                     boolean found = false;
  51.                     int d = 0;
  52.                     for (d = 2; d < 10000 && BigInteger.valueOf(d * d).compareTo(num) <= 0; d++) {
  53.                         if (num.mod(BigInteger.valueOf(d)).equals(BigInteger.ZERO)) {
  54.                             found = true;
  55.                             break;
  56.                         }
  57.                     }
  58.  
  59.                     if (!found) {
  60.                         works = false;
  61.                         break;
  62.                     }
  63.  
  64.                     divisors[i - 2] = d;
  65.                 }
  66.                 if (works) {
  67.                     coins.add(coin.toString());
  68.                     out.println(coin.toString() + " " + Arrays.toString(divisors).replaceAll("[\\[\\],]", ""));
  69.                 }
  70.                 coin = new StringBuilder("");
  71.             }
  72.         }
  73.  
  74.         in.close();
  75.         out.close();
  76.     }
  77.  
  78.     public static void debug(Object o) {
  79.         System.out.println("\t\tDEBUG: " + o.toString().replace("\n", "\n\t\tDEBUG: "));
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement