1009. Product of Polynomials (25)

This time, you are supposed to find A*B where A and B are two polynomials.

Input Specification:

Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 ... NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, ..., K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10, 0 <= NK < ... < N2 < N1 <=1000.

Output Specification:

For each test case you should output the product of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate up to 1 decimal place.

Sample Input

2 1 2.4 0 3.2 
2 2 1.5 1 0.5

Sample Output

3 3 3.6 2 6.0 1 1.6 
代码
 1 #include <stdio.h>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 
 6 typedef struct Poly{
 7     int exp;
 8     double coef;
 9 }Poly;
 int comp(const Poly&,const Poly&);
 int main()
 {
     int KA,KB;
     Poly A[],B[],C[];
     int i,j;
     while(scanf("%d",&KA) != EOF){
         for(i=;i<KA;++i){
             scanf("%d%lf",&A[i].exp,&A[i].coef);
         }
         scanf("%d",&KB);
         for(i=;i<KB;++i){
             scanf("%d%lf",&B[i].exp,&B[i].coef);
         }
         for(i=;i<KA;++i)
             for(j=;j<KB;++j){
                 C[i * KB + j].exp = A[i].exp + B[j].exp;
                 C[i * KB + j].coef = A[i].coef * B[j].coef;
             }
         sort(C,C+KA*KB,comp);
         double coef_sum = C[].coef;
         int exp = C[].exp;
         j = ;
         for(i=;i<KA*KB;++i){
             if(exp == C[i].exp){
                 coef_sum += C[i].coef;
             }
             else{
                 if (abs(coef_sum) > 0.000001){
                     C[j].exp = exp;
                     C[j++].coef = coef_sum;
                 }
                 exp = C[i].exp;
                 coef_sum = C[i].coef;
             }
         }
         if (abs(coef_sum) > 0.000001){
             C[j].exp = exp;
             C[j++].coef = coef_sum;
         }
         printf("%d",j);
         for(i=;i<j;++i){
             printf(" %d %.1lf",C[i].exp,C[i].coef);
         }
         printf("\n");
     }
     return ;
 }
 int comp(const Poly &x,const Poly &y)
 {
     return y.exp < x.exp;
 }

PAT 1009的更多相关文章

  1. PAT 1009 Product of Polynomials

    1009 Product of Polynomials (25 分)   This time, you are supposed to find A×B where A and B are two p ...

  2. PAT 1009 说反话 (20)(代码)

    1009 说反话 (20)(20 分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空 ...

  3. PAT——1009. 说反话

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...

  4. PAT 1009 Product of Polynomials (25分) 指数做数组下标,系数做值

    题目 This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: E ...

  5. PAT 1009. 说反话 (20) JAVA

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...

  6. PAT 1009. 说反话 (20)

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...

  7. PAT 1009 说反话

    https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960 给定一句英语,要求你编写程序,将句中所有单词 ...

  8. PAT 1009. Triple Inversions (35) 数状数组

    Given a list of N integers A1, A2, A3,...AN, there's a famous problem to count the number of inversi ...

  9. PAT 1009 说反话 C语言

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...

随机推荐

  1. Gradle使用手册(二):项目结构

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...

  2. Android调试工具及方法

    转自:http://www.cnblogs.com/feisky/archive/2010/01/01/1637566.html Logcat Dump一份系统消息的日志.这些消息包括模拟器抛出错误时 ...

  3. 【JMeter】JMeter使用plugins插件进行服务器性能监控

    性能测试时,我们的关注点有两部分 1 服务本身:并发 响应时间 QPS 2 服务器的资源使用情况:cpu memory I/O disk等 JMeter的plugins插件可以实现对"二&q ...

  4. jenkins+ant+ssh远程部署服务glassfish

    jenkins安装可以参考官网或自己百度,这里不再说明: jenkins版本2.19.2 这里先说一下目的:主要是通过jenkins实现glassfish的部署,源码使用的是svn,编译是使用ant, ...

  5. sys.stdout 重定向

    通俗的来说,sys.stdout的功能类似与C++里面的文件输出功能fprintf. 接下来直接入正题,让我们来看代码: >>> import sys >>> te ...

  6. 决策树学习(ID3)

    参考:<机器学习实战> 优点:计算复杂度不高, 输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特 征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 创建分支 ...

  7. new和delete为什么要匹配

    operator new和operator delete函数有两个重载版本: void* operator new (size_t); // allocate an object void* oper ...

  8. 各个版本的spring jar包

    http://repo.spring.io/release/org/springframework/spring/ 里面有各个版本的jar包

  9. hdoj 2111 Saving HDU

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. 转载 HTTP常见状态码分析 200 301 302 404 500

    转载原地址:  http://www.cnblogs.com/starof/p/5035119.html HTTP状态码(HTTP Status Code) 一些常见的状态码为: 一.1开头1xx(临 ...