import java.io.*;
import java.text.MessageFormat;
import java.util.*;
class Node
{
public int factor;
public int exponent;
public Node next;
public Node()
{
factor=0;
exponent=0;
next=null;
}
public Node (int factor, int exponent, Node next)
{
this.factor=factor;
this.exponent=exponent;
this.next=next;
}
}
class PolynomialAddition {
static Scanner inFile;
dataInpt
= new File("/tmp/input.txt"); inFile = new Scanner(dataInpt);
while (inFile.hasNextLine()) {
Node first = readPolynomial();
printList(first);
Node second = readPolynomial();
printList(second);
Node merged = addPolynomials(first, second);
System.
out.
println("Really crude, next two lines\n\n"); }
}
private static Node addPolynomials(Node first, Node second) {
return null;
}
private static Node readPolynomial() {
String line
= inFile.
nextLine();
Node head = null, previous = null;
while (myTokens.hasMoreTokens()) {
Node current = new Node();
String term
= myTokens.
nextToken();
term.substring(0, term.indexOf("x")));
current.
exponent = Integer.
valueOf( term.substring(term.indexOf("^") + 1));
if (previous == null)
{
head = current;
previous = head;
} else
{
previous.next = current;
previous = current;
}
}
return head;
}
public static void printList(Node head) {
for (Node ptr = head; ptr != null; ptr = ptr.next)
ptr.exponent));
}
}
public class Main {
PolynomialAddition go = new PolynomialAddition();
go.main(args);
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwppbXBvcnQgamF2YS51dGlsLio7CgpjbGFzcyBOb2RlCnsKICBwdWJsaWMgaW50IGZhY3RvcjsKICBwdWJsaWMgaW50IGV4cG9uZW50OwogIHB1YmxpYyBOb2RlIG5leHQ7CgogIHB1YmxpYyBOb2RlKCkKICB7CiAgICBmYWN0b3I9MDsKICAgIGV4cG9uZW50PTA7CiAgICBuZXh0PW51bGw7CiAgfQogIHB1YmxpYyBOb2RlIChpbnQgZmFjdG9yLCBpbnQgZXhwb25lbnQsIE5vZGUgbmV4dCkKICB7CiAgICB0aGlzLmZhY3Rvcj1mYWN0b3I7CiAgICB0aGlzLmV4cG9uZW50PWV4cG9uZW50OwogICAgdGhpcy5uZXh0PW5leHQ7CiAgfQp9CiAKY2xhc3MgUG9seW5vbWlhbEFkZGl0aW9uIHsKICAgICAgICBzdGF0aWMgRmlsZSBkYXRhSW5wdDsKICAgICAgICBzdGF0aWMgU2Nhbm5lciBpbkZpbGU7CiAKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICAgICAgICAgZGF0YUlucHQgPSBuZXcgRmlsZSgiL3RtcC9pbnB1dC50eHQiKTsKICAgICAgICAgICAgICAgIGluRmlsZSA9IG5ldyBTY2FubmVyKGRhdGFJbnB0KTsKIAogICAgICAgICAgICAgICAgd2hpbGUgKGluRmlsZS5oYXNOZXh0TGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgZmlyc3QgPSByZWFkUG9seW5vbWlhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBwcmludExpc3QoZmlyc3QpOwogCiAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgc2Vjb25kID0gcmVhZFBvbHlub21pYWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRMaXN0KHNlY29uZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBOb2RlIG1lcmdlZCA9IGFkZFBvbHlub21pYWxzKGZpcnN0LCBzZWNvbmQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVhbGx5IGNydWRlLCBuZXh0IHR3byBsaW5lc1xuXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAKICAgICAgICBwcml2YXRlIHN0YXRpYyBOb2RlIGFkZFBvbHlub21pYWxzKE5vZGUgZmlyc3QsIE5vZGUgc2Vjb25kKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAKICAgICAgICBwcml2YXRlIHN0YXRpYyBOb2RlIHJlYWRQb2x5bm9taWFsKCkgewogICAgICAgICAgICAgICAgU3RyaW5nIGxpbmUgPSBpbkZpbGUubmV4dExpbmUoKTsKICAgICAgICAgICAgICAgIFN0cmluZ1Rva2VuaXplciBteVRva2VucyA9IG5ldyBTdHJpbmdUb2tlbml6ZXIobGluZSk7CiAKICAgICAgICAgICAgICAgIE5vZGUgaGVhZCA9IG51bGwsIHByZXZpb3VzID0gbnVsbDsKICAgICAgICAgICAgICAgIHdoaWxlIChteVRva2Vucy5oYXNNb3JlVG9rZW5zKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSBjdXJyZW50ID0gbmV3IE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRlcm0gPSBteVRva2Vucy5uZXh0VG9rZW4oKTsKIAogICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmZhY3RvciA9IEludGVnZXIudmFsdWVPZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0uc3Vic3RyaW5nKDAsIHRlcm0uaW5kZXhPZigieCIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuZXhwb25lbnQgPSBJbnRlZ2VyLnZhbHVlT2YoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLnN1YnN0cmluZyh0ZXJtLmluZGV4T2YoIl4iKSArIDEpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXMgPT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQgPSBjdXJyZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gaGVhZDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMubmV4dCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBoZWFkOwogICAgICAgIH0KIAogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludExpc3QoTm9kZSBoZWFkKSB7CiAgICAgICAgICAgICAgICBmb3IgKE5vZGUgcHRyID0gaGVhZDsgcHRyICE9IG51bGw7IHB0ciA9IHB0ci5uZXh0KQogICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJ7MH0gIHsxfSAgIiwgcHRyLmZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ci5leHBvbmVudCkpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgfQp9CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICAgICAgUG9seW5vbWlhbEFkZGl0aW9uIGdvID0gbmV3IFBvbHlub21pYWxBZGRpdGlvbigpOwogICAgICAgICAgICBnby5tYWluKGFyZ3MpOwogICAgICAgIH0KfQ==