• 【PAT甲级】1009 Product of Polynomials (25 分)


    题意:

    给出两个多项式,计算两个多项式的积,并以指数从大到小输出多项式的指数个数,指数和系数。

    trick:

    这道题数据未知,导致测试的时候发现不了问题所在。

    用set统计非零项时,通过set.size()输出非零项个数,set.count()与否来判断是否输出该项时结果第0个测试点答案错误。

    用fabs(mp[i])>=0.05时结果全部正确,因为考虑到保留1位小数所以用这个语句来判断保留小数后是否非零。

    问题是当去掉fabs()时采用mp[i]>=0.05结果第0个测试点答案错误。

    而不管保留1位小数以后才导致的0.0直接输出非零(以下代码采用本方法)又会全部通过。

    感觉题意可能引起歧义,测试点也未公开,所以有些答案不得而知,对于小数精度的判断知识又掌握甚少,为节省时间故不再深究。

    希望对第0点答案错误的朋友有所帮助。

    AAAAAccepted code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a[17],b[17];
     4 double num1[17],num2[17];
     5 map<int,double>mp;
     6 int main(){
     7     int n;
     8     cin>>n;
     9     for(int i=1;i<=n;++i)
    10         cin>>a[i]>>num1[i];
    11     int m;
    12     cin>>m;
    13     for(int i=1;i<=m;++i)
    14         cin>>b[i]>>num2[i];
    15     for(int i=1;i<=n;++i)
    16         for(int j=1;j<=m;++j){
    17             int x=a[i]+b[j];
    18             double ans=num1[i]*num2[j];
    19             mp[x]+=ans;
    20         }
    21     int cnt=0;
    22     for(int i=0;i<=2000;++i)
    23         if(mp[i])
    24             cnt++;
    25     cout<<cnt;
    26     for(int i=2000;i>=0;--i)
    27         if(mp[i])
    28             cout<<" "<<i<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<mp[i];
    29     return 0;
    30 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    HDU 5360——Hiking——————【贪心+优先队列】
    HDU 5351——MZL's Border——————【高精度+找规律】
    高精度运算——java
    java题目练手
    java学习
    Arduino 模拟引脚
    Batch批处理 间断向EXE发送参数
    Example Code for a TMP102 I2c Thermometer————Arduino
    c++中vector的用法详解
    C/C++ 中 exit() 函数
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11218110.html
Copyright © 2020-2023  润新知