1.用结构体表示多项式
#include <cstdio>
int main()
{
int K1, K2;
struct poly
{
double coef;
int expon;
} P1[10], P2[10], P[20];
scanf("%d", &K1);
for (int j = 0; j < K1; j++)
scanf("%d %lf", &P1[j].expon, &P1[j].coef);
scanf("%d", &K2);
for (int j = 0; j < K2; j++)
scanf("%d %lf", &P2[j].expon, &P2[j].coef);
int i, j, k;
double coe;
i = j = k = 0;
while(i<K1 && j<K2)
{
if (P1[i].expon > P2[j].expon)
P[k++] = P1[i++];
if (P1[i].expon < P2[j].expon)
P[k++] = P2[j++];
if (P1[i].expon == P2[j].expon)
{
coe = P1[i].coef + P2[j].coef;
if (coe != 0)
{
P[k].coef = coe;
P[k].expon = P1[i].expon;
k++;
}
i++, j++;
}
}
while(i<K1) {
P[k++] = P1[i++];
}
while(j<K2) {
P[k++] = P2[j++];
}
printf("%d ", k);
for (int i = 0; i < k;i++){
if(i)
printf(" ");
printf("%d %.1f", P[i].expon, P[i].coef);
}
return 0;
}
2.用数组表示多项式:数组下标为指数,其内容为系数,即p[n]表示幂次为n的项的系数
#include<cstdio>
const int max_n = 1001;
double p[max_n] = {};
int main(){
int k,n,count;
double a;
scanf("%d",&k);
while(k--){
scanf("%d %lf",&n,&a);
p[n] += a;
}
scanf("%d",&k);
while(k--){
scanf("%d %lf",&n,&a);
p[n] += a;
}
for(int i = 0;i<1001;i++){
if(p[i]) count++;
}
printf("%d",count);
for(int i = 1000;i>=0;i--){
if(p[i]){
printf(" %d %.1f",i,p[i]);
}
}
return 0;
}```