hdu3546 Calculator

      8月19号在杭电DIY上做的一题,题意不难理解,十个存储器,起始值都为1,经过一系列运算之后,求最终值!

      问题就是该题是大数,一开始用吉林大学的模板,敲了很久,交了以后TLE(听说浙大大模板也许可以过,它是4位一体的),没办法,尝试着用JAVA。

      第一次在比赛中用JAVA写题目,而且是在杭电OJ被雷劈了以后(小汗一把)。状况很多,写起来磕磕碰碰的,很是纠结,总算到最后写好了,也算可以吧。

/** * @(#)Main.java * * * @author * @version 1.00 2010/8/19 */ import java.io.*; import java.util.*; import java.math.*; class Main { public static void main(String args[]) { int i; String s; char op; Scanner in = new Scanner(System.in); BigInteger num[] = new BigInteger[11]; for(i = 0;i<10;i++) { num[i] = BigInteger.valueOf(1); } while(in.hasNext()) { s = in.next(); //System.out.println(s); op = s.charAt(1); if(op == '=') { int s1 = (int)(s.charAt(0) - 'A'); int e1 = (int)(s.charAt(2) - 'A'); num[s1] = num[e1]; } else if(op == '+') { int s1 = (int)(s.charAt(0) - 'A'); int e1 = (int)(s.charAt(3) - 'A'); num[s1] = num[s1].add(num[e1]); } else if(op == '*') { int s1 = (int)(s.charAt(0) - 'A'); int e1 = (int)(s.charAt(3) - 'A'); num[s1] = num[s1].multiply(num[e1]); } } for(i=0;i<10;i++) System.out.println(num[i]); } }

      Scanner是一个类,用来输入的时候用,很强大,很方便的。不过我理解的不是很深。

      用构造方法构造出来以后,可以用hasnext()来判断是否有下一组数据,用next()来得到下一组数据,下一组数据是什么类型,就用什么,比如nextInt(),nextLine()等。但注意一点就是String类时直接用next(),不要用nextLine()。这题我错在这里一次(TLE了)。

你可能感兴趣的:(hdu3546 Calculator)