码迷,mamicode.com
首页 > 其他好文 > 详细

一元稀疏多项式加法运算

时间:2014-10-14 19:57:49      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   for   sp   数据   div   

描述:

设计一个一元稀疏多项式加法运算器,完成多项式a和b相加,建立多项式a+b。

输入说明:

一组输入数据,所有数据均为整数。第1行为2个正整数n,m,其中 n表示第一个多项式的项数,m表示第二个多项式的项数;第2行包含2n个整数,每两个整数分别表示第一个多项式每一项的系数和指数;第3行包含2m个整数,每两个整数分别表示第二个多项式每一项的系数和指数。(注:序列按指数升序排列)

输出说明:

在一行以类多项式形式输出结果,指数按从低到高的顺序。注意,系数值为1的非零次项的输出形式中略去系数1,如1x^2的输出形式为x^2,-1 x^2的输出形式为-x^2。

输入样例:

6 2

1 0 1 1 1 2 1 3 1 4 2 5

-1 3 -2 4

输出样例:

1+x+x^2-x^4+2x^5

 

下面贴上我写的代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int a1[1000];
 6     int a2[1000];
 7     memset(a1,0,sizeof(a1));    //将a1数组所有元素初始化为0
 8     memset(a2,0,sizeof(a2));    //将a2数组所有元素初始化为0
 9     int n,m;
10     int t1,t2;       //每次取两个数,t1为系数,t2为相应的指数
11     scanf("%d %d",&n,&m);
12     for(int i=0;i<n;i++)        //将第一个式子保存在a1中,a1的每个元素表示式子的一个项,
13     {                           //元素的值为项的系数,元素下标为项的指数
14         scanf("%d %d",&t1,&t2);
15         a1[t2]=t1;
16     }
17     for (int i=0;i<m;i++)       //将第二个式子保存在a2中
18     {
19         scanf("%d %d",&t1,&t2);
20         a2[t2]=t1;
21     }
22     bool flag=true;             //flag标记当前项否是“和式”的第一项,flag为true时表示当前项是“和式”的第一项
23     for(int i=0;i<1000;i++)     //i表示项的指数,从0开始扫描
24     {
25         int k=a1[i]+a2[i];      //k为两个式子中指数为i的项的系数的和
26         if(k!=0)          //“和式”中有指数为i的项
27         {
28             if(i==0)            //如果此项的指数为0
29             printf("%d",k);
30             else if(i==1)       //如果此项的指数是1
31             {
32                 if(k==-1)       //如果此项的指数是1,且系数是-1
33                 printf("-X");
34                 else if(k==1)   //如果此项的指数是1,且系数是1
35                 flag ? printf("X") : printf("+X");
36                 else            //如果此项的指数是1,系数不是-1或1
37                 !flag&&k>0 ? printf("+%dX",k) : printf("%dX",k);
38             }
39             else                //如果此项的指数大于1
40             {
41                 if(k==-1)       //如果此项的指数大于1,且系数是-1
42                 printf("-X^%d",i);
43                 else if(k==1)   //如果此项的指数大于1,且系数是1
44                 flag ? printf("X^%d",i) : printf("+X^%d",i);
45                 else            //如果此项的指数大于1,且系数不是-1或1
46                 !flag&&k>0 ? printf("+%dX^%d",k,i) : printf("%dX^%d",k,i);
47             }
48             flag=false;
49         }
50     }
51     printf("\n");
52     return 0;
53 }

******

一元稀疏多项式加法运算

标签:style   blog   color   io   os   for   sp   数据   div   

原文地址:http://www.cnblogs.com/sage-blog/p/4024727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!