2011年2月15日火曜日

Aizu Online Judge 0110 Alphametic

■0110 Alphametic

Xを0~9に変えて全部試すだけ.ただし,左端がXかつX=0となるようなケースに注意する必要がある.桁が大きそうなので,BigIntegerを使用した.

  1. import java.util.*;  
  2. import java.lang.*;  
  3. import java.math.*;  
  4. import java.io.*;  
  5.   
  6. import static java.lang.Math.*;  
  7. import static java.util.Arrays.*;  
  8.   
  9. public class Main{  
  10.   
  11.  Scanner sc=new Scanner(System.in);  
  12.   
  13.  int INF=1<<28;  
  14.  double EPS=1e-9;  
  15.   
  16.  String e1, e2, e3;  
  17.  int x;  
  18.   
  19.  void run(){  
  20.   for(; sc.hasNext();){  
  21.    String[] ss=sc.nextLine().split("[+]");  
  22.    e1=ss[0];  
  23.    ss=ss[1].split("=");  
  24.    e2=ss[0];  
  25.    e3=ss[1];  
  26.    solve();  
  27.   }  
  28.  }  
  29.   
  30.  void solve(){  
  31.   for(x=0; x<10; x++){  
  32.    if(x==0){  
  33.     if(e1.length()>1&&e1.charAt(0)=='X')  
  34.      continue;  
  35.     if(e2.length()>1&&e2.charAt(0)=='X')  
  36.      continue;  
  37.     if(e3.length()>1&&e3.charAt(0)=='X')  
  38.      continue;  
  39.    }  
  40.    if(toBI(e1).add(toBI(e2)).compareTo(toBI(e3))==0){  
  41.     println(""+x);  
  42.     return;  
  43.    }  
  44.   }  
  45.   println("NA");  
  46.  }  
  47.   
  48.  BigInteger toBI(String s){  
  49.   BigInteger bi=BigInteger.ZERO;  
  50.   for(char c : s.toCharArray()){  
  51.    if(c=='X'){  
  52.     bi=bi.multiply(BigInteger.TEN).add(new BigInteger(""+x));  
  53.    }else{  
  54.     bi=bi.multiply(BigInteger.TEN).add(new BigInteger(""+c));  
  55.    }  
  56.   }  
  57.   return bi;  
  58.  }  
  59.   
  60.  void debug(Object... os){  
  61.   System.err.println(Arrays.deepToString(os));  
  62.  }  
  63.   
  64.  void print(String s){  
  65.   System.out.print(s);  
  66.  }  
  67.   
  68.  void println(String s){  
  69.   System.out.println(s);  
  70.  }  
  71.   
  72.  public static void main(String[] args){  
  73.   // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));  
  74.   new Main().run();  
  75.  }  
  76. }  

0 件のコメント: