8月19号在杭电DIY上做的一题,题意不难理解,十个存储器,起始值都为1,经过一系列运算之后,求最终值!
问题就是该题是大数,一开始用吉林大学的模板,敲了很久,交了以后TLE(听说浙大大模板也许可以过,它是4位一体的),没办法,尝试着用JAVA。
第一次在比赛中用JAVA写题目,而且是在杭电OJ被雷劈了以后(小汗一把)。状况很多,写起来磕磕碰碰的,很是纠结,总算到最后写好了,也算可以吧。
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了)。