GitHub

markdownPDF


问题描述

A+B for Polynomials (25)

时间限制 400 ms

内存限制 65536 kB

代码长度限制 16000 B

判题程序 Standard

作者 CHEN, Yue

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

Input

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

For each test case you should output the sum 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 to 1 decimal place.

Sample Input

2 1 2.4 0 3.2

2 2 1.5 1 0.5

Sample Output

3 2 1.5 1 2.9 0 3.2

大意是:

多项式加法

共两行输入数据,每行输入数据包括:K N1 aN1 N2 aN2 ... NK aNK,其中K是在多项式非零项的数量,Ni和aNi分别是指数和系数。

1<=K<=10,0<=NK<... < N2 < N1<=1000.


解题思路

  1. 数组下标作为次数,数值存储系数和;
  2. 边读入边计算最终非零项个数。

注意点:

  1. 系数和为0的项不计算在内;
  2. 输出结果不能有多余空格。

代码

错误版本

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int i,j,n,m,s,t;
float a[1001],k;
memset(a,0,sizeof(a));
cin>>n;
for (i=0;i<n;i++)
{
cin>>j>>k;
a[j]=k;
}
t=n;
cin>>n;
for (i=0;i<n;i++)
{
cin>>j>>k;
if (a[j]==0) t++;
a[j]+=k;
if (a[j]==0) t--;
}
cout<<t<<' ';
n=t;
t=0;
for (i=1000;i>=0;i--)
{
if (a[i]!=0)
{
if (t<n)
{
printf("%d %.1f ",i,a[i]);
t++;
}
else printf("%d %.1f",i,a[i]);
}
}
return 0;
}

评测结果为全部格式错误。经过检查,防止最后多出空格的做法错了 不应该偷懒。。t的初始值应该设为1,或改变if的判断条件。

正确版本(用了更简便的输出)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int i,j,n,m,s,t;
float a[1001],k;
memset(a,0,sizeof(a));
cin>>n;
for (i=0;i<n;i++)
{
cin>>j>>k;
a[j]=k;
}
t=n;
cin>>n;
for (i=0;i<n;i++)
{
cin>>j>>k;
if (a[j]==0) t++;
a[j]+=k;
if (a[j]==0) t--;
}
cout<<t;
for (i=1000;i>=0;i--)
if (a[i]!=0) printf(" %d %.1f",i,a[i]);
return 0;
}

提交记录

错误版本

修改后

PAT (Advanced Level) Practise 1002 解题报告的更多相关文章

  1. PAT (Advanced Level) Practise 1004 解题报告

    GitHub markdownPDF 问题描述 解题思路 代码 提交记录 问题描述 Counting Leaves (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 1600 ...

  2. PAT (Advanced Level) Practise 1003 解题报告

    GitHub markdownPDF 问题描述 解题思路 代码 提交记录 问题描述 Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题 ...

  3. PAT (Advanced Level) Practise 1001 解题报告

    GiHub markdown PDF 问题描述 解题思路 代码 提交记录 问题描述 A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判 ...

  4. PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642

    PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642 题目描述: This time, you are suppos ...

  5. PAT (Advanced Level) Practise:1002. A+B for Polynomials

    [题目链接] This time, you are supposed to find A+B where A and B are two polynomials. Input Each input f ...

  6. PAT (Advanced Level) Practise - 1094. The Largest Generation (25)

    http://www.patest.cn/contests/pat-a-practise/1094 A family hierarchy is usually presented by a pedig ...

  7. 1079. Total Sales of Supply Chain (25)【树+搜索】——PAT (Advanced Level) Practise

    题目信息 1079. Total Sales of Supply Chain (25) 时间限制250 ms 内存限制65536 kB 代码长度限制16000 B A supply chain is ...

  8. 1076. Forwards on Weibo (30)【树+搜索】——PAT (Advanced Level) Practise

    题目信息 1076. Forwards on Weibo (30) 时间限制3000 ms 内存限制65536 kB 代码长度限制16000 B Weibo is known as the Chine ...

  9. 1064. Complete Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise

    题目信息 1064. Complete Binary Search Tree (30) 时间限制100 ms 内存限制65536 kB 代码长度限制16000 B A Binary Search Tr ...

随机推荐

  1. Socket网络编程(二)

    udp协议发送消息案例 1.创建UdpServer(udp服务器端) package com.cppdy.udp; import java.net.DatagramPacket; import jav ...

  2. java----DOS命令

    dir /?   查看帮助 dir /s   查看当前的目录,以及子目录

  3. cf1144G 将串分解成单调递增和递减子串(贪心)

    这算哪门子dp.. 具体做法就是贪心,建立两个vector存递增序列递减序列,操作过程中a可以合法地匀一个给b 就是判断第i个数放在递增序列里还是放在递减序列里,需要根据后面的数来进行决策 #incl ...

  4. easyUI-datagrid带有工具栏和分页器的数据网格

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据 ...

  5. iOS 测试之非代码获取 iPhone 型号及其他信息

    首先 安装libimobiledevice和ideviceinstaller $ brew uninstall ideviceinstaller $ brew uninstall libimobile ...

  6. c++ 链表基础功能实现

    #include<stack> struct ListNode { int m_nValue; ListNode* m_pNext; }; ListNode* CreateListNode ...

  7. Unet 项目部分代码学习

    github地址:https://github.com/orobix/retina-unet 主程序: ################################################ ...

  8. ConfigurationManager 类的使用

    一.引用 命名空间:   System.Configuration程序集:  System.Configuration(位于 System.Configuration.dll) 二.示例 1.读取.增 ...

  9. 步步为营-76-用户登录(Session+Cookie)

    说明:cookie是保存在浏览器的.Session是存储在服务器的 1 同样UI页面还是web前端提供 1.1 首先,经过验证码校验:将系统产生的验证码放入到Session中,然后取Session值注 ...

  10. 输出GPLT

    L1-023 输出GPLT (20 分)   给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符( ...