PAT A1002 A+B for Polynomials(25)
AC代码
转载自https://www.cnblogs.com/zjutJY/p/9413766.html
#include <stdio.h>
#include<string.h>
//输入:两行数据,每行表示一个多项式:第一个数字表示非零项的数目,
//后面每两个数表示一项,分别表示幂次和系数。
//输出:两个多项式的和,格式与输入一样
int main(){
const int MAX_N=1111;
double a=0.0;
int k,n=0,count=0,i;//k:输入的非零项数,n:幂次,a:系数,count:和的非零项数
double p[1111]={0};//声明时使用{0}初始化为全0
//double p[MAX_N];
//memset(p,0,MAX_N);//使用memset方法,注意要加string.h头文件
// for(i=MAX_N-1;i>=0;i--){
// printf("%.1f",p[i]);
// }
//输入第一行数据
scanf("%d",&k);
for(i=0;i<k;i++){
scanf("%d %lf",&n,&a);
p[n]+=a;
}
//输入第二行数据
scanf("%d",&k);
for(i=0;i<k;i++){
scanf("%d %lf",&n,&a);
p[n]+=a;
}
for(i=0;i<MAX_N;i++){
if(p[i]){
count++;
}
}
printf("%d",count);
for(i=MAX_N-1;i>=0;i--){
if(p[i]){
printf(" ");
printf("%d %.1f",i,p[i]);
}
}
return 0;
}
自己写的, 一个都没有通过
#include <cstdio>
#include <algorithm>
#define N 1010
using namespace std;
int main() {
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
double num[N] = {0.0};
int big = 0, t = 0;
for(int i = 0; i < 2; i++) {
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++) {
int a;
double b;
scanf("%d %1f", &a, &b);
num[a] += b;
//if(big < a) swap(big, a);
//t++;
}
}
for(int i = 0; i < N; i++) {
if(num[i] != 0) {
t++;
}
}
printf("%d", t);
for(int i = N; i >= 0; i--) {
if(num[i] != 0.0){
printf(" %d %.1f", i, num[i]);
}
}
return 0;
}
吾生也有涯,而知也无涯。