首页 > 代码库 > 一元稀疏多项式加法运算
一元稀疏多项式加法运算
描述:
设计一个一元稀疏多项式加法运算器,完成多项式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) //如果此项的指数为029 printf("%d",k);30 else if(i==1) //如果此项的指数是131 {32 if(k==-1) //如果此项的指数是1,且系数是-133 printf("-X");34 else if(k==1) //如果此项的指数是1,且系数是135 flag ? printf("X") : printf("+X");36 else //如果此项的指数是1,系数不是-1或137 !flag&&k>0 ? printf("+%dX",k) : printf("%dX",k);38 }39 else //如果此项的指数大于140 {41 if(k==-1) //如果此项的指数大于1,且系数是-142 printf("-X^%d",i);43 else if(k==1) //如果此项的指数大于1,且系数是144 flag ? printf("X^%d",i) : printf("+X^%d",i);45 else //如果此项的指数大于1,且系数不是-1或146 !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 }
******
一元稀疏多项式加法运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。