0%

PAT A 1002 A+B for Polynomials

题目链接

一刷

  • 一定要注意理解题目意思啊,人家要输出非零项的个数和非零项,注意正负相消
  • 然后就是变量范围,It is given that 1≤K≤10,0≤N**K<⋯<N2<N1≤1000.K是每行最多给10项,N是指每一项,数组要根据这个来定义,所以要大于1000
  • 最后要注意输出的空格啊!!!
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
#include <iostream>
#include <vector>
using namespace std;

vector<double> nums(1100, 0.0);

int main() {
int k, n = 0;
double m = 0.0;

while (cin>>k) {
for (int i = 0; i < k; i++) {
cin >> n >> m;
nums[n] += m;
}
}
int len = nums.size()-1;
int cnt = 0;
for (int i = 0; i < len; i++) {
if (nums[i] != 0) {
cnt++;
}
}
printf("%d",cnt);
for (int i = len; i >=0; i--) {
if (nums[i] == 0.0) continue;
printf(" %d %0.1f", i, nums[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
#include <cstdio>
const int maxn=1010;
double poly[maxn];
int main(){
int n,e;
double c;
scanf("%d",&n);
for(int i=0;i<maxn;i++) poly[i]=0;
for(int i=0;i<n;i++){
scanf("%d%lf",&e,&c);
poly[e]=c;
}
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%lf",&e,&c);
poly[e]+=c;
}
int cnt=0;
for(int i=1000;i>=0;i--){
if(poly[i]!=0){
cnt++;
}
}
printf("%d",cnt);
for(int i=1000;i>=0;i--){
if(poly[i]!=0){
printf(" %d %.1f",i,poly[i]);
}
}

return 0;
}

本文标题:PAT A 1002 A+B for Polynomials

文章作者:GavinYGM

发布时间:2020年08月21日 - 11:08

最后更新:2020年08月21日 - 11:08

原始链接:http://www.gavinygm.cn/2020/08/21/PAT-A-1002-A-B-for-Polynomials/

许可协议: 转载请保留原文链接及作者。