Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- import java.math.*;
- public class googol{
- static Map<BigInteger,BigInteger> id = new HashMap<BigInteger, BigInteger>();
- static BigInteger two = new BigInteger("2");
- static BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
- public static void main (String [] args) throws IOException {
- PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("googol.out")));
- String trash;
- int count1 = 1;
- int count2 = 1;
- System.out.println(1);
- id.put(new BigInteger("1"), new BigInteger("1"));
- StringTokenizer st0 = new StringTokenizer(f.readLine());
- id.put(new BigInteger("2"),new BigInteger(st0.nextToken()));
- id.put(new BigInteger("3"), new BigInteger(st0.nextToken()));
- BigInteger node = new BigInteger("1");
- System.out.println(1);
- while(true){
- StringTokenizer st1 = new StringTokenizer(f.readLine());
- trash = st1.nextToken();
- id.put(node.multiply(two),new BigInteger(trash));
- trash=st1.nextToken();
- id.put(node.multiply(two).add(BigInteger.ONE),new BigInteger(trash));
- if(trash.equals("0")){
- break;
- }
- node=node.multiply(two);
- count1++;
- System.out.println(id.get(node));
- }
- System.out.println(1);
- BigInteger node2 = new BigInteger("1");
- while(true){
- StringTokenizer st2 = new StringTokenizer(f.readLine());
- trash=st2.nextToken();
- id.put(node2.multiply(two),new BigInteger(trash));
- trash = st2.nextToken();
- id.put(node2.multiply(two).add(BigInteger.ONE),new BigInteger(trash));
- if(trash.equals("0")){
- break;
- }
- node2=node2.multiply(two).add(BigInteger.ONE);
- count2++;
- System.out.println(trash);
- }
- if(count1 ==count2){
- BigInteger answer = BigInteger.ZERO;
- for(int i = 0;i<count1;i++){
- answer=answer.multiply(two).add(BigInteger.ONE);
- }
- System.out.println("Answer " + answer);
- }
- else{
- BigInteger search = node;
- BigInteger power = BigInteger.ONE;
- for(int i = 1;i<count1;i++){
- if(id.get(search.add(power))==null){
- Queue<BigInteger> fat = new LinkedList<BigInteger>();
- BigInteger bad = search.add(power);
- while(id.get(bad)==null){
- fat.add(bad.mod(two));
- bad=bad.divide(two);
- }
- while(fat.size()>0){
- System.out.println(id.get(bad));
- StringTokenizer st7 = new StringTokenizer(f.readLine());
- id.put(bad.multiply(two),new BigInteger(st7.nextToken()));
- id.put(bad.multiply(two).add(BigInteger.ONE),new BigInteger(st7.nextToken()));
- bad=bad.multiply(two).add(fat.poll());
- }
- }
- if(!id.get(search.add(power)).equals(new BigInteger("0"))){
- search=search.add(power);
- }
- power=power.multiply(two);
- }
- BigInteger answer = BigInteger.ONE;
- for(int i = 1;i<count1;i++){
- answer=answer.multiply(two).add(search.mod(two));
- search=search.divide(two);
- }
- System.out.println("Answer " + answer);
- }
- System.out.close();
- System.exit(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement