zoukankan      html  css  js  c++  java
  • 九度oj 题目1472:求两个多项式的和

    题目描述:

    输入两个多项式,计算它们的和。
    每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第二个整数表示该项的次数。
    如由3 3 5 -2 1 4 0表示3x^5 - 2 * x + 4其中第一个3表示该多项式由三个整数对表示。

    输入:

    输入为两行,分别表示两个多项式。表示每项的整数对按照次数大小降序给出。(次数绝对值小于1000,系数绝对值小于10000)

    输出:

    按照降次顺序输出表示和多项式的整数对(系数为0的整数对不用输出,整数对由空格分隔,最后一个整数对后不添加空格)

    样例输入:
    3 3 5 -2 1 4 0
    4 2 3 -1 2 1 1 3 0
    样例输出:
    3 5 2 3 -1 2 -1 1 7 0
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <string>
     5 #include <cmath>
     6 #include <algorithm>
     7 
     8 #define MAX 2009
     9 
    10 int xi[MAX];
    11 
    12 int main(int argc, char const *argv[])
    13 {
    14     int n;
    15     //freopen("input.txt","r",stdin);
    16     while(scanf("%d",&n) != EOF) {
    17         memset(xi,0,sizeof(xi));
    18         for(int i = 0; i < n; i++) {
    19             int xiTemp;
    20             int ciTemp;
    21             scanf("%d %d",&xiTemp,&ciTemp);
    22             if(ciTemp < 0) {
    23                 ciTemp = ciTemp + 2001;
    24             }
    25             xi[ciTemp] = xiTemp;
    26         }
    27         scanf("%d",&n);
    28         for(int i = 0; i < n; i++) {
    29             int xiTemp;
    30             int ciTemp;
    31             scanf("%d %d",&xiTemp,&ciTemp);
    32             if(ciTemp < 0) {
    33                 ciTemp = ciTemp + 2001;
    34             }
    35             xi[ciTemp] = xi[ciTemp] + xiTemp;
    36         }
    37         bool isOne = true;
    38         
    39        
    40         for(int i = 1000; i >= 0; i--) {
    41             if(xi[i] != 0) {
    42                 if(isOne) {
    43                     printf("%d %d",xi[i],i);
    44                     isOne = false;
    45                 }
    46                 else {
    47                     printf(" %d %d",xi[i],i);
    48                 }
    49                 
    50             }
    51         }
    52         
    53          for(int i = MAX-1; i >= 1001; i--) {
    54             if(xi[i] != 0) {
    55                 if(isOne) {
    56                     printf("%d %d",xi[i],i-2001);
    57                     isOne = false;
    58                 }
    59                 else {
    60                     printf(" %d %d",xi[i],i-2001);
    61                 }
    62                 
    63             }
    64         }
    65         
    66         printf("
    ");
    67     }
    68 
    69     return 0;
    70 }

     主要注意是绝对值小于1000

  • 相关阅读:
    Python3.4 多线程
    OSG Win7 + VS2015 编译
    OSG-3.4.0 简要说明(Readme)
    Boost 1.62.0 编译参数
    VS2015 + QT5.7 中文的坑
    C++库编译
    osg学习笔记3 简单几何模型
    Sqlserver 创建账号
    nginx检查报错:nginx: [emerg] "server" directive is not allowed here in
    Linux修改挂载目录名称
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5692033.html
Copyright © 2011-2022 走看看