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

PAT甲级——1009 Product of Polynomials (25分)(最后一个测试点段错误)

程序员文章站 2024-03-21 23:44:40
...

思路:我记得乙级有一道题是多项式相加,这里是相乘,差不多的

借鉴木桶排序的思想,定义一个木桶数组,木桶的下标代表指数,元素值代表系数

数组开小了后面三个测试点都会段错误

我还有一个段错误想不明白,如果有路过的dalao麻烦指点一下

PAT甲级——1009 Product of Polynomials (25分)(最后一个测试点段错误)

#include <iostream>
#include <algorithm>
using namespace std;
static const int MAX=2010;
struct P{
    int exp;//指数
    float coef;//系数
};
float bucket[MAX];

int main(){
    int a1,a2,num=0;
    P p1[10],p2[10];
    cin>>a1;
    for(int i=0;i<a1;i++)
        cin>>p1[i].exp>>p1[i].coef;
    cin>>a2;
    for(int i=0;i<a1;i++)
        cin>>p2[i].exp>>p2[i].coef;
    for(int i=0;i<a1;i++)
        for(int j=0;j<a2;j++)
            bucket[p1[i].exp+p2[j].exp] += (p1[i].coef*p2[j].coef);
    for(int i=MAX;i>=0;i--)
        if(bucket[i]!=0)
            num++;
    cout<<num<<" ";
    for(int i=MAX;i>=0;i--)
        if(bucket[i]!=0){
            num--;
            if(num)
                printf("%d %.1f ",i,bucket[i]); 
            else
                printf("%d %.1f",i,bucket[i]);   
        }
    cout<<endl;
    return 0;
} 

 

相关标签: PAT甲级