Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.67 KB | None | 0 0
  1. import java.io.BufferedOutputStream;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.math.BigInteger;
  7. import java.util.Stack;
  8. import java.util.StringTokenizer;
  9.  
  10. public class Main
  11. {
  12.         public static  void main(String[] args)throws IOException
  13.         {
  14.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  15.                 PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
  16.                // StringTokenizer datos = new StringTokenizer(br.readLine());
  17.  
  18.                 int T = Integer.parseInt(br.readLine());
  19.                
  20.                 for(int i=0;i<T;i++){
  21.                       StringTokenizer datos = new StringTokenizer(br.readLine());
  22.                       String S=datos.nextToken();
  23.                       BigInteger a = new BigInteger(S,2);
  24.                       BigInteger aux = new BigInteger(new StringBuilder(S).reverse().toString(),2);
  25.                       int hamming = Integer.parseInt(datos.nextToken());
  26.                       Stack<Integer>  pila = new Stack<Integer>();
  27.                       BigInteger bin = BigInteger.ONE.shiftLeft(S.length()-1);
  28.                       int cont=0;
  29.                       BigInteger suma=BigInteger.ZERO;
  30.                       BigInteger res=BigInteger.ZERO;
  31.                       BigInteger numero=BigInteger.ZERO;
  32.                       for(int k=0;k<S.length();k++){
  33.                           numero=bin.shiftRight(k)   ;
  34.                           if((aux.testBit(k))){
  35.                               cont++;
  36.                               suma=suma.add(numero);
  37.                               if(cont==hamming){
  38.                                   k=S.length();
  39.                               }
  40.                           }
  41.                           else{
  42.                               pila.add(S.length()-1-k);
  43.                           }  
  44.                       }
  45.                       if(hamming==0){
  46.                           res= a;
  47.                       }
  48.                       else if(cont==hamming)
  49.                           res= a.subtract(suma);
  50.                       else if(cont<hamming)
  51.                       {
  52.                           while(!pila.isEmpty()){
  53.                               res=res.add( new BigInteger("2").pow(pila.pop()));
  54.                               cont++;
  55.                               if(cont==hamming)                              
  56.                                   pila.removeAllElements();
  57.                           }
  58.                       }
  59.                       StringBuilder sb = new StringBuilder();
  60.                       sb.append("Case #").append(i+1).append(": ").append(String.format(("%"+S.length()+"s"), res.toString(2)).replace(' ','0'));
  61.                       out.println(sb);
  62.                 }
  63.                 out.flush();
  64.         }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement