首页 > 其他分享 >PAT 甲级:1002 A+B for Polynomials,测试点说明

PAT 甲级:1002 A+B for Polynomials,测试点说明

时间:2023-10-05 21:34:20浏览次数:30  
标签:map 系数 PAT 测试点 输出 指数 Polynomials mp 项数

 

1002 A+B for Polynomials  25分

题解:(类似于把两个多项式合并同类项:指数相同的项把系数相加),最后输出新多项式的项数、各项。

 

需要注意的测试点

1.输出的新项格式要与输入的一致:[项数] [指数1] [系数1] [指数2] [系数2] ...;且指数递减

2.指数是整型,系数是浮点型;且最后输出的系数保留一位小数

3.若指数为0系数不为0,该项是存在的,要输出该项;若系数为0,该项就是0了,无意义,不输出该项

4.若计算得到的新项项数为0,输出"0"即可,后面不要有空格

~~第一次提交时因为没有注意3、4,只得了17/25分,补上对3、4的处理即得满分。

 

题的做法:

1.首先要读懂题,没读懂题尤其不知道那两个单词exponent、cofficient的话,这是否有点...拔剑四顾心茫然/出师未捷身先死?

2.读懂题后还是比较简单的,说白了就是两个多项式相加得到新多项式。

3.因为指数的范围是有限的,且是对指数的系数相加,直接map[指数] += 系数即可。因为map是默认从小到大排列,这里将map->first放到vector<int>中sort(v.begin(),v.end(),greater<int>()),然后遍历vector,输出i和map[i]即可。第3步的处理和处理静态链表有点像,map+vector<map->first>这个组合好用极了。

 1 void ex1002(){
 2     int n1,n2,exponent;     // 项数、指数
 3     double coefficient;     // 系数
 4     map<int,double> mp;     // mp[指数] = 系数
 5     cin >> n1;
 6     for(int j=0;j<n1;j++){
 7         scanf("%d %lf",&exponent,&coefficient);
 8         mp[exponent] += coefficient;
 9     }
10     cin >> n2;
11     for(int j=0;j<n2;j++){
12         scanf("%d %lf",&exponent,&coefficient);
13         mp[exponent] += coefficient;
14     }
15     vector<int> v;
16     for(auto it=mp.begin();it!=mp.end();it++){
17         if(it->second != 0.0){      // 如果系数为0就不能作为输出项
18             v.push_back(it->first);
19         }
20     }
21     sort(v.begin(),v.end(),greater<int>());
22     cout << v.size();
23     if(v.size() ==0){
24         return;
25     }else{cout << " ";}     // 如果项数为0后面就不要加空格
26     for(int i=0;i<v.size();i++){
27         printf("%d %.1lf",v[i],mp[v[i]]);
28         if(i+1!=v.size()){
29             cout << " ";
30         }
31     }
32 }
33 
34 int main(){
35     ex1002();
36 
37     return 0;
38 }

 

 

 

 

   

标签:map,系数,PAT,测试点,输出,指数,Polynomials,mp,项数
From: https://www.cnblogs.com/jinziguang/p/17743940.html

相关文章

  • typescript: Prototype Pattern
     /***PrototypePattern原型是一种创建型设计模式,使你能够复制对象,甚至是复杂对象,而又无需使代码依赖它们所属的类。*Theexampleclassthathascloningability.We'llseehowthevaluesoffield*withdifferenttypeswillbecloned.*/classPrototype......
  • typescript: Builder Pattern
     /***TypeScript实体类Model*BuilderPattern*生成器是一种创建型设计模式,使你能够分步骤创建复杂对象。*https://stackoverflow.com/questions/12827266/get-and-set-in-typescript*https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines*/cl......
  • PAT乙级真题:1110 区块反转
     【1110区块反转分值:25乙级】题目描述:给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转。例如:给定 L 为1→2→3→4→5→6→7→8,K 为3,则输出应该为7→8→4→5→6→1→2→3 ......
  • P9019 [USACO23JAN] Tractor Paths P 题解
    Description有\(n\)个区间,第\(i\)个区间为\([l_i,r_i]\)。保证\(l_1<l_2<\cdots<l_n\)且\(r_1<r_2<\cdots<r_n\)。其中一部分区间是特殊的,输入会给定。如果第\(i\)个区间和第\(j\)个区间相交,那么\(i,j\)之间有一条边。保证\(1,n\)联通。给定\(Q\)组询问,每次......
  • @PathVariable注解
    @PathVariable主要作用:映射URL绑定的占位符带占位符的URL是Spring3.0新增的功能,URL中的{xxx}占位符可以通过@PathVariable(“xxx”)绑定到操作方法的入参中。例如:@RequestMapping("/user/{id}")publicStringtestPathVariable(@PathVariable("id")Stringid){System.o......
  • Flutter/Dart第09天:Dart高级特殊Pattern模式的概览和用法
    Dart官方文档:https://dart.dev/language/patterns重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。Pattern模式匹配的定义官网定义:PatternsareasyntacticcategoryintheDartlan......
  • 在不受支持的 Mac 上安装 macOS Sonoma (OpenCore Legacy Patcher)
    在不受支持的Mac上安装macOSSonoma、Ventura、Monterey、BigSur(OpenCoreLegacyPatcher)InstallmacOSonunsupportedMacs请访问原文链接:https://sysin.org/blog/install-macos-14-on-unsupported-mac/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgmacOS......
  • [pwn之路]patchelf之后,加载符号表!
    前言当你在进行二进制漏洞学习和利用时,经常需要使用调试工具来分析和理解程序的内部工作。在之前的交流中,我们提到了如何使用patchelf来修改二进制文件[Pwn之路]根据所给库,获得远程同环境——使用patchelf的正确姿势,以适应调试的需求,但没有详细介绍如何加载符号表。实际上,对于学......
  • 什么是语义化版本里的 Major,Minor 和 Patch 版本号
    语义化版本(SemanticVersioning):Major、Minor和Patch版本号解析语义化版本,通常简称为SemVer,是一种软件版本号的标准化方案,旨在使软件版本号的管理更加透明和可预测。它主要由三个部分组成:Major(主版本号)、Minor(次版本号)和Patch(修订版本号)。在这篇文章中,我们将深入解释这三个部分......
  • 【知识杂谈#1】Linux如何安装net-tools和sbin配置PATH
    1.Linux下载net-tools在Linux上下载net-tools包的方法可能会因你所使用的Linux发行版而有所不同。在某些现代的Linux发行版中,net-tools已经被弃用,而推荐使用iproute2来替代它。#对于Debian/Ubuntu系统:sudoaptinstallnet-tools#对于CentOS/RHEL系统:sudoyuminstallnet-tools#......