点击链接PAT甲级-AC全解汇总
题目:
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 a(N1) N2 a(N2) … NK a(N(K))
where K is the number of nonzero terms in the polynomial, Ni and a(N(i))
(i=1,2,⋯,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10,0≤NK <⋯
Output Specification:
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
- 1
- 2
Sample Output:
3 2 1.5 1 2.9 0 3.2
- 1
题意:
输入的是两个多项式
第一位是有几项,意味着后面有几对(指数,系数)
比如2 1 2.4 0 3.2
的意思是这个多项式有2项,其中指数为1的系数是2.4,指数为0的系数是3.2
输出两个多项式的和,方式要和输入一样
我的代码:
#include
using namespace std;
int main()
{
double exp[1010]={0};
int K,cnt=0;
cin>>K;
for(int i=0;i<K;i++)
{
int index;
double num;
cin>>index>>num;
// if(exp[index]==0)cnt++;
exp[index]+=num;
}
cin>>K;
for(int i=0;i<K;i++)
{
int index;
double num;
cin>>index>>num;
// if(exp[index]==0)cnt++;
exp[index]+=num;
}
for(int i=1000;i>=0;i--)
{
if(exp[i]!=0)cnt++;
}
cout<<cnt;
for(int i=1000;i>=0;i--)
{
if(exp[i]!=0)printf(" %d %.1f",i,exp[i]);
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
注意: 可能有系数为0的时候,所以cnt要单独计算,不然一堆错误
评论记录:
回复评论: