zoukankan      html  css  js  c++  java
  • PAT 1009

    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;
    10 int comp(const Poly&,const Poly&);
    11 int main()
    12 {
    13     int KA,KB;
    14     Poly A[10],B[10],C[100];
    15     int i,j;
    16     while(scanf("%d",&KA) != EOF){
    17         for(i=0;i<KA;++i){
    18             scanf("%d%lf",&A[i].exp,&A[i].coef);
    19         }
    20         scanf("%d",&KB);
    21         for(i=0;i<KB;++i){
    22             scanf("%d%lf",&B[i].exp,&B[i].coef);
    23         }
    24         for(i=0;i<KA;++i)
    25             for(j=0;j<KB;++j){
    26                 C[i * KB + j].exp = A[i].exp + B[j].exp;
    27                 C[i * KB + j].coef = A[i].coef * B[j].coef;
    28             }
    29         sort(C,C+KA*KB,comp);
    30         double coef_sum = C[0].coef;
    31         int exp = C[0].exp;
    32         j = 0;
    33         for(i=1;i<KA*KB;++i){
    34             if(exp == C[i].exp){
    35                 coef_sum += C[i].coef;
    36             }
    37             else{
    38                 if (abs(coef_sum) > 0.000001){
    39                     C[j].exp = exp;
    40                     C[j++].coef = coef_sum;
    41                 }
    42                 exp = C[i].exp;
    43                 coef_sum = C[i].coef;
    44             }
    45         }
    46         if (abs(coef_sum) > 0.000001){
    47             C[j].exp = exp;
    48             C[j++].coef = coef_sum;
    49         }
    50         printf("%d",j);
    51         for(i=0;i<j;++i){
    52             printf(" %d %.1lf",C[i].exp,C[i].coef);
    53         }
    54         printf(" ");
    55     }
    56     return 0;
    57 }
    58 int comp(const Poly &x,const Poly &y)
    59 {
    60     return y.exp < x.exp;
    61 }


  • 相关阅读:
    一直追求技术好吗?
    设计模式前言
    vba 行 列 单元格 统计
    JavaScript 仿LightBox内容显示效果
    Excel 比大小
    多态
    JavaScript 图片切换展示效果
    vba 单元格 一系例操作
    关于Flex的争论(富客户端、弱客户端)
    input文本框样式代码实例
  • 原文地址:https://www.cnblogs.com/boostable/p/pat_1009.html
Copyright © 2011-2022 走看看