多项式相加

Posted 读你一世

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多项式相加相关的知识,希望对你有一定的参考价值。

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:

2x6+3x5+12x3+6x+20

现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。

程序要处理的幂最大为100。

 

输入格式:

总共要输入两个多项式,每个多项式的输入格式如下:

每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。

注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

 

输出格式:

从最高幂开始依次降到0幂,如:

2x6+3x5+12x3-6x+20

注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

 

  1. #include <stdio.h>  
  2. #include <math.h>  
  3.     
  4. void outNum(int j,int k)  
  5. {  
  6.     int absk = abs(k);  
  7.     if(absk==1 && j!=1 && j!=0)  
  8.     {  
  9.         printf("x%d",j);  
  10.     }  
  11.     else if(absk==1 && j!=0)  
  12.     {  
  13.         printf("x");  
  14.     }  
  15.     else if(absk==1)  
  16.     {  
  17.         printf("%d",absk);  
  18.     }  
  19.     else if(j==0)  
  20.     {  
  21.         printf("%d",absk);  
  22.     }  
  23.     else if(j==1)  
  24.     {  
  25.         printf("%dx",absk);  
  26.     }  
  27.     else  
  28.     {  
  29.         printf("%dx%d",absk,j);  
  30.     }  
  31.     
  32. }  
  33.     
  34. int main()  
  35. {  
  36.     int num[101] = { (0) };  
  37.     int cut = 0;  
  38.     int ent = 0;  
  39.     int i,j,k;  
  40.     while(cut < 2)  
  41.     {  
  42.         k=0;  
  43.         scanf("%d %d",&j,&k);  
  44.         num[j] += k;  
  45.         if(j==0)  
  46.             cut++;  
  47.     }  
  48.     
  49.     for(i=100;i>-1;i--)  
  50.     {  
  51.         j=i;  
  52.         k=num[j];  
  53.         if(k!=0)  
  54.         {  
  55.             ent++;  
  56.             if(cut==2)  
  57.             {  
  58.                 if(k<0)  
  59.                     printf("-");  
  60.                 outNum(j,k);  
  61.                 cut ++;  
  62.             }  
  63.             else  
  64.             {  
  65.                 if(k<0)  
  66.                 {  
  67.                     printf("-");  
  68.                     outNum(j,k);  
  69.                 }  
  70.                 else  
  71.                 {  
  72.                     printf("+");  
  73.                     outNum(j,k);  
  74.                 }  
  75.             }  
  76.         }  
  77.     }  
  78.     if(ent==0)  
  79.         printf("0");  
  80.     
  81.     return 0;  
  82. }  

以上是关于多项式相加的主要内容,如果未能解决你的问题,请参考以下文章

两个多项式相乘和相加的算法

链表实现一元多项式相加

多项式相加

多项式链表多项式相加

结构与算法一元多项式的相加运算

两个多项式相加 ( C++ )