📄 3341003_ac_188ms_2100k.java
字号:
import java.util.*;
public class Main
{
/**
* @param args
*/
public static void main(String[] args)
{
new Main().run();
}
class Expression
{
int c0, c1;
}
String exp;
int pointer;
public void run()
{
Scanner in = new Scanner (System.in);
int cas = 1;
while (in.hasNext())
{
exp = in.next();
System.out.println("Equation #"+(cas++));
solve();
}
}
public Expression parseFactor()
{
Expression e = new Expression();
if (exp.charAt(pointer)=='x')
{
pointer++;
e.c0 = 0;
e.c1 = 1;
}
else
{
if (exp.charAt(pointer)=='(')
{
pointer++;
e = parseExpression();
pointer++;
}
else
{
e.c0 = 0;
e.c1 = 0;
while (pointer < exp.length() && Character.isDigit(exp.charAt(pointer)))
{
e.c0 = 10*e.c0 + (int)(exp.charAt(pointer++)-'0');
}
}
}
return e;
}
public Expression parseTerm()
{
Expression factor = new Expression();
factor = parseFactor();
while (pointer < exp.length() && exp.charAt(pointer)=='*')
{
pointer++;
Expression tmp = new Expression();
tmp = parseFactor();
factor.c1 = factor.c1*tmp.c0 + factor.c0*tmp.c1;
factor.c0 = factor.c0 * tmp.c0;
}
return factor;
}
public Expression parseExpression()
{
Expression term = new Expression();
term = parseTerm();
while (pointer < exp.length() && (exp.charAt(pointer)=='+'||exp.charAt(pointer)=='-'))
{
if (exp.charAt(pointer)=='+')
{
pointer++;
Expression tmp = new Expression();
tmp = parseTerm();
term.c0 += tmp.c0;
term.c1 += tmp.c1;
}
else
{
pointer++;
Expression tmp = new Expression();
tmp = parseTerm();
term.c0 -= tmp.c0;
term.c1 -= tmp.c1;
}
}
return term;
}
public void solve()
{
Expression left = new Expression();
Expression right = new Expression();
pointer = 0;
left = parseExpression();
pointer++;
right = parseExpression();
if (left.c1==right.c1)
{
if (left.c0==right.c0)
{
System.out.println("Infinitely many solutions.");
}
else
{
System.out.println("No solution.");
}
}
else
{
double a, b;
a = left.c0 - right.c0;
b = right.c1 - left.c1;
System.out.printf("x = %f\n", a / b);
}
System.out.println();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -