Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package lightswitch;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.math.BigInteger;
- import java.util.Arrays;
- import java.util.Scanner;
- /**
- *
- * @author ASUS
- */
- public class LightSwitch {
- /**
- * @param args the command line arguments
- */
- public static char flip(char a){
- if (a=='0')return '1';
- return '0';
- }
- public static void main(String[] args) throws FileNotFoundException {
- Scanner sc=new Scanner(new File("out"));
- // Scanner sc=new Scanner(System.in);
- int tst=0;
- while (sc.hasNext()){
- tst++;
- int p1=0,p2=0;
- BigInteger bi=sc.nextBigInteger();
- char[] str1 = bi.toString(2).toCharArray();
- bi=sc.nextBigInteger();
- char[] str2 = bi.toString(2).toCharArray();
- int len=Math.max(str1.length,str2.length);
- StringBuilder str1b=new StringBuilder();
- for (int i=0;i<len-str1.length;++i){
- str1b.append("0");
- }
- str1b.append(str1);
- // System.out.println(str1b.toString());
- str1=str1b.toString().toCharArray();
- str1b=new StringBuilder();
- for (int i=0;i<len-str2.length;++i){
- str1b.append("0");
- }
- str1b.append(str2);
- // System.out.println(str1b.toString());
- str2=str1b.toString().toCharArray();
- if (str1.length==1){
- if (str1[0]==str2[0]){
- if (str1[0]=='0')break;
- System.out.print("Case Number "+tst+": ");
- System.out.println(0);
- }
- else {
- System.out.print("Case Number "+tst+": ");
- System.out.println(1);
- }
- System.out.println();
- continue;
- }
- System.out.print("Case Number "+tst+": ");
- char[] str=Arrays.copyOf(str1, str1.length);
- int ans=1000000000;
- BigInteger moves=new BigInteger("-1");
- StringBuilder X=new StringBuilder("0");
- int sz=str.length;// , sol1=0 , sol2=1;
- for(int j=1;j<sz;j++){
- if(str[j-1]!=str2[j-1]){
- str[j-1]=flip(str[j-1]);
- str[j]=flip(str[j]);
- if(j!=sz-1) str[j+1]=flip(str[j+1]);
- // sol1++;
- X.append("1");
- }
- else
- X.append("0");
- }
- String s1=new String(str);
- String s2=new String(str2);
- if (s1.equals(s2)){
- p1=1;
- // ans=sol1;
- moves=new BigInteger(X.toString(),2);
- // System.out.println(moves);
- }
- //
- //-------------------------------------------------------
- X=new StringBuilder("1");
- str=Arrays.copyOf(str1, str1.length);
- str[0]=flip(str[0]); str[1]=flip(str[1]);
- for(int j=1;j<sz;j++){
- if(str[j-1]!=str2[j-1]){
- str[j-1]=flip(str[j-1]);
- str[j]=flip(str[j]);
- if(j!=sz-1) str[j+1]=flip(str[j+1]);
- // sol2++;
- X.append("1");
- }
- else
- X.append("0");
- }
- // System.out.println(str);
- //-------------------------------------------------------
- s1=new String(str);
- s2=new String(str2);
- if (s1.equals(s2)){
- p2=1;
- // if (sol2<ans){
- // ans=sol2;
- // moves=new BigInteger(X.toString(),2);
- // }
- // else if (sol2==ans){
- BigInteger moves2=new BigInteger(X.toString(),2);
- if (moves.equals(new BigInteger("-1"))||moves.compareTo(moves2)>0)
- moves=moves2;
- //}
- }
- if (moves.equals(new BigInteger("-1"))){
- System.out.println("impossible");
- }
- else {
- // System.out.println(ans);
- // System.out.println(sol1+" " +p1);
- // System.out.println(sol2+" "+p2);
- //
- System.out.println(moves);
- }
- System.out.println();
- }
- // TODO code application logic here
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement