一元多项式的乘法和加法

//一元多项式的乘法和加法

import java.util.*;

class Node{
 int index;
 int coef;
 Node next = null;
    public Node(int coef, int index) {
     this.index = index;
     this.coef = coef;
    }
}

class Link{
 Node head = null;
 Node tmp = null;
 
 public void addnode(int coef,int index) {
  Node n = new Node(coef,index);
  if(head == null) {
   head = n;
   tmp = head;
   return;
  }
  tmp.next = n;
   while(tmp.next != null) {
    tmp = tmp.next;
   }
 }
 
 public Link pluslink(Link a,Link b) {
  Link c = new Link();
  a.tmp = a.head;
  b.tmp = b.head;

while(a.tmp != null && b.tmp !=null) {
   if(a.tmp.index == b.tmp.index) {
    if(a.tmp.coef+b.tmp.coef!=0) {
    c.addnode(a.tmp.coef+b.tmp.coef,a.tmp.index);}
    a.tmp = a.tmp.next;
    b.tmp = b.tmp.next;
    
   }
   else if(a.tmp.index > b.tmp.index) {
    c.addnode( a.tmp.coef,a.tmp.index);
    a.tmp = a.tmp.next;
   }
   else if(a.tmp.index < b.tmp.index) {
    c.addnode(b.tmp.coef,b.tmp.index);
    b.tmp = b.tmp.next;
   }
  }
  if(a.tmp == null) {
   while(b.tmp != null) {
    c.addnode(b.tmp.coef,b.tmp.index);
    b.tmp = b.tmp.next;
   }
  }
  else if(b.tmp == null) {
   while(a.tmp != null) {
    c.addnode(a.tmp.coef,a.tmp.index);
    a.tmp = a.tmp.next;
   }
  }
  return c;
  
 }
 
 public Link multiplelink(Link a,Link b) {
  a.tmp = a.head;
  b.tmp = b.head;
  Link m = new Link();
  while(a.tmp != null) {
   Link l = new Link();
   while(b.tmp !=null) {
   l.addnode(a.tmp.coef*b.tmp.coef, a.tmp.index+b.tmp.index);
   b.tmp = b.tmp.next;
   }
   m=pluslink(m, l);
   a.tmp = a.tmp.next;
   b.tmp = b.head;
     
  }
  return m;
 }
 
 public void printlink(Link a) {
  a.tmp = a.head;
  int n = 0;
  if(a.tmp == null)
  {System.out.print("0 0");}
  else{
   while(a.tmp != null) {
    if(a.tmp.coef != 0) {
     System.out.print(a.tmp.coef +" "+a.tmp.index);
     n++;
        a.tmp = a.tmp.next;
        {while(a.tmp != null) {
         if(a.tmp.coef != 0) {
         System.out.print(" "+a.tmp.coef +" "+a.tmp.index);
         n++;
         }
         a.tmp = a.tmp.next;
         
        }break;
        }
       
    }
    else {a.head = a.tmp;}
    a.tmp = a.tmp.next;
   }
     if(n==0) {
      System.out.print("0 0");
     }
  }
  
 }
}
public class Main {

public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  Link s1 = new Link();
  int N1=in.nextInt();
  for(int n = N1; n>0; n--) {
   s1.addnode(in.nextInt(), in.nextInt());
  }
  Link s2 = new Link();
  int N2=in.nextInt();
  for(int n =N2; n>0; n--) {
   s2.addnode(in.nextInt(), in.nextInt());
  }
  Link s3 = new Link();
  
  
  if(N1>=N2){
  s3.printlink(s3.multiplelink(s2, s1));
  }
  else {
  s3.printlink(s3.multiplelink(s1, s2)); 
  }
  
  System.out.println();
  s3.printlink(s3.pluslink(s1, s2));

in.close();

}

}

1.判断是否是零多项式可以在加法时判断,我是在输出时判断的,应该在加法处判断比较简单;

2.输入零多项式和常数多项式中的零多项式就是不输入(。。)而不是输入0 0。

原文地址:https://www.cnblogs.com/dyq19/p/10274042.html

时间: 2024-10-13 12:18:46

一元多项式的乘法和加法的相关文章

[PAT] 一元多项式的乘法与加法运算 C语言实现

[PAT] 02-线性结构1 一元多项式的乘法与加法运算 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出

02-线性结构2 一元多项式的乘法与加法运算 (20 分)

02-线性结构2 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输

7-22 一元多项式的乘法与加法运算 (20 分)

7-22 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例:

PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)

设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 15 24 -25 22 30 21 -10 20

一元多项式的乘法与加法运算——链表实现

题目:设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 即f1(x)=3x4-5x2+6x-2 f2(x)=5x

线性结构CT 02-线性结构1 一元多项式的乘法与加法运算

设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 15 24 -25 22 30 21 -10 20

PTA 数据结构 一元多项式的乘法与加法运算 (仅供参考,请勿粘贴)

设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 15 24 -25 22 30 21 -10 20

02-线性结构2 一元多项式的乘法与加法运算

设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 15 24 -25 22 30 21 -10 20

一元多项式的乘法与加法运算

Description: 设计函数分别求两个一元多项式的乘积与和. Input Specification: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. Output Specification: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. Sample Input: 4 3 4 -5 2 6 1