1229: 等式判断
时间限制: 1 Sec 内存限制: 128 MB
题目描述
输入一个等式如:
1+2=3
1*2=6
10/2=5
请判断等式是否正确。如果正确,输出YES,否则输出NO。
输入
输入第一行为一个数T,表示有T组数据。
每组数据输入一个等式,等式中只包含不大于10000的非负整数。
输出
对于每组数据输出YES或NO。
样例输入
2 1+2=3 1*8=9
样例输出
YES NO
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
for (int i = 0; i < n; i++) {
f(sc.next(),a,i);
}
for (int i = 0; i < a.length; i++) {
if(a[i]==1)
System.out.println("YES");
else
System.out.println("NO");
}
}
private static void f(String s,int a[],int i) {
int add = s.indexOf('+');
int mul = s.indexOf('*');
int div = s.indexOf('/');
int equal = s.indexOf('=');
if(add !=-1) {
if(zhuanhuan(s.substring(0, add))+zhuanhuan(s.substring(add+1,equal))==zhuanhuan(s.substring(equal+1))) {
a[i] = 1;
}
}else if(mul != -1) {
if(zhuanhuan(s.substring(0, mul))*zhuanhuan(s.substring(mul+1,equal))==zhuanhuan(s.substring(equal+1))) {
a[i] = 1;
}
}else if(div != -1) {
int x = zhuanhuan(s.substring(0, div));
int y = zhuanhuan(s.substring(div+1,equal));
if(y!=0) {
if(x/y==zhuanhuan(s.substring(equal+1))) {//小心有余数
a[i] = 1;
}
}
}
}
private static int zhuanhuan(String x) {
int temp = 0;
for (int j = 0; j < x.length(); j++) {
temp = x.charAt(j) - '0'+temp*10;
}
return temp;
}
}
/**************************************************************
Problem: 1229
User: 20161514325
Language: Java
Result: 正确
Time:258 ms
Memory:13328 kb
****************************************************************/