【甲级PAT】-1009 Product of Polynomials (25分)-数字处理STL

题目描述

1009 Product of Polynomials (25分)
指数 底数的形式输入两行数据,输出相乘结果
每行的第一个数字表示指数 底数有多少组

思路

1002 A+B for Polynomials (25分)很相似。
用两个结构体来存储输入数据
使用map<int, double>来存储答案,int存指数,double表示系数相乘的结果

注意判断系数等于0的情况,否则第一个测试点不通过

#include <bits/stdc++.h>

using namespace std;

struct node1
{
    int exp;
    double coe;
}a1[12];
struct node2
{
    int exp;
    double coe;
}a2[12];
map<int, double> ans;
typedef pair<int,double>PAIR;
int main()
{
    #ifdef ONLINE_JUDGE
    #else
        freopen("1.txt", "r", stdin);
    #endif

    int n1,n2;
    cin>>n1;
    for(int i=1;i<=n1;i++)
        cin>>a1[i].exp>>a1[i].coe;
    cin>>n2;
    for(int i=1;i<=n2;i++)
        cin>>a2[i].exp>>a2[i].coe;

    for(int i=1;i<=n1;i++)
    {
        for(int j=1;j<=n2;j++)
        {
            int index=0;
            index=a1[i].exp+a2[j].exp;
            ans[index]+=a1[i].coe*a2[j].coe;
        }
    }
    int cnt=0;//统计系数等于0的个数
    vector<PAIR>vec(ans.rbegin(),ans.rend());
    for(auto it=0;it<vec.size();it++)
    {
        if(vec[it].second==0)cnt++;
    }

    printf("%d",(int)ans.size()-cnt);

    for(auto it=0;it<vec.size();it++)
    {
        if(vec[it].second==0)continue;
        printf(" %d %.1lf",vec[it].first,vec[it].second);
    }
    return 0;
}

上一篇:输入一个表达式(用字符串表示),求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。


下一篇:多项式牛顿迭代(应用:求逆,开根,对数exp)