PAT甲级 1009 Product of Polynomials第一个测试点不通过

PAT甲级 1009 Product of Polynomials第一个测试点不通过_第1张图片

注意事项

第一个测试点一直不过,后来把cnt计数放在外面就通过了。。。
我这边的建议就是不要在计算乘积的时候计数,另外在循环一次计数

原始代码

#include
#include
#include
using namespace std;
struct polynomial{
    int exponent;
    double coefficient;
};
int main()
{
    int cnt=0,numa,numb;
    double result[2010]={0};
    vector<polynomial> a(10),b(10);
    cin>>numa;
    for(int i=0;i<numa;i++)
    {
        cin>>a[i].exponent>>a[i].coefficient;
    }
    cin>>numb;
    for(int i=0;i<numb;i++)
    {
        cin>>b[i].exponent>>b[i].coefficient;
    }
    while(numa--)
    {
        int temp;
        for(int i=0;i<numb;i++)
        {
            temp=a[numa].exponent+b[i].exponent;
            if(result[temp]!=0)cnt++;//在计算中间计数,无法通过
            result[temp]+=a[numa].coefficient*b[i].coefficient;
        }
    }
    cout<<cnt;
    for(int i=2002;i>=0;i--)
    {
        if(result[i]!=0)
        printf(" %d %.1lf",i,result[i]);
    }
    return 0;
}

AC代码

#include
#include
#include
using namespace std;
struct polynomial{
    int exponent;
    double coefficient;
};
int main()
{
    int cnt=0,numa,numb;
    double result[2010]={0};
    vector<polynomial> a(10),b(10);
    cin>>numa;
    for(int i=0;i<numa;i++)
    {
        cin>>a[i].exponent>>a[i].coefficient;
    }
    cin>>numb;
    for(int i=0;i<numb;i++)
    {
        cin>>b[i].exponent>>b[i].coefficient;
    }
    while(numa--)
    {
        int temp;
        for(int i=0;i<numb;i++)
        {
            temp=a[numa].exponent+b[i].exponent;
            result[temp]+=a[numa].coefficient*b[i].coefficient;
        }
    }
    for(int i=2002;i>=0;i--)  //另外开一个循环计数
    {                             
    	if(result[i]!=0)cnt++; 
    }
    cout<<cnt;
    for(int i=2002;i>=0;i--)
    {
        if(result[i]!=0)
        printf(" %d %.1lf",i,result[i]);
    }
    return 0;
}

你可能感兴趣的:(PAT甲级)