欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

甲级PAT1002

程序员文章站 2022-06-07 14:39:05
...

甲级PAT1002

多项式相加
该题从两个多项式的最高阶次开始找,阶次不同取高阶次的,同阶次把系数相加即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
  int n;
  double a; 
}s1[15],s2[15],s[30];
int main()
{
    int k1,k2;  
    scanf("%d",&k1);
    for(int i=1;i<=k1;i++)
      scanf("%d %lf",&s1[i].n,&s1[i].a);
    scanf("%d",&k2);
    for(int i=1;i<=k2;i++)
      scanf("%d %lf",&s2[i].n,&s2[i].a);
    int l1=1,l2=1,l=1;
    while(l1<=k1||l2<=k2)
    {
        if(l1>k1)
        {
            s[l].n=s2[l2].n;s[l].a=s2[l2].a;
            l++;l2++;
            continue;
        }
        if(l2>k2)
        {
            s[l].n=s1[l1].n;s[l].a=s1[l1].a;
            l++;l1++;
            continue;
        }
        if(s1[l1].n>s2[l2].n)
        {
            s[l].n=s1[l1].n;s[l].a=s1[l1].a;
            l++;l1++;
        }
        else if(s1[l1].n<s2[l2].n)
        {
            s[l].n=s2[l2].n;s[l].a=s2[l2].a;
            l++;l2++;
        }
        else
        {
            s[l].n=s2[l2].n;s[l].a=s1[l1].a+s2[l2].a;
            if(s[l].a!=0)l++;
            l1++;l2++;
        }
    }
    l--;
    printf("%d",l);
    for(int i=1;i<=l;i++)
      printf(" %d %.1f",s[i].n,s[i].a);
    return 0;
}
相关标签: PAT