PAT 1002 A+B for Polynomials c语言和c++解
c语言代码
void getin(int num,float *a){
for(int i=0;i<num;i+=2){
scanf(" %f %f",&a[i],&a[i+1]);
}
}
int main() {
int num1, num2, i = 0, j = 0, k = 0, length = 0, p=0;
scanf("%d", &num1);
num1 *= 2;
float a[num1];
getin(num1, a);
scanf("%d", &num2);
num2 *= 2;
float b[num2];
getin(num2, b);
float c[num1 + num2];
while(i<num1||j<num2) {
if (i < num1 && j < num2) {
if (a[i] == b[j]) {
if(a[i + 1] + b[j + 1]!=0) {
c[k] = a[i];
c[k + 1] = a[i + 1] + b[j + 1];
k += 2;
length++;
}
i += 2;
j += 2;
} else if (a[i] > b[j]) {
c[k] = a[i];
c[k + 1] = a[i + 1];
i += 2;
k += 2;
length++;
} else if (a[i] < b[j]) {
c[k] = b[j];
c[k + 1] = b[j + 1];
j += 2;
k += 2;
length++;
}
} else if (i < num1) {
c[k] = a[i];
c[k + 1] = a[i + 1];
i += 2;
k += 2;
length++;
} else if (j < num2) {
c[k] = b[j];
c[k + 1] = b[j + 1];
j += 2;
k += 2;
length++;
}
}
printf("%d", length);
for (p = 0; p < length * 2; p += 2) {
printf(" %d %.1f", (int) c[p], c[p + 1]);
}
return 0;
}
cpp代码
#include<iostream>
using namespace std;
const int N=1010;
double a[N],b[N],c[N];
int main(){
int k;
cin>>k;
while(k--){
int n;
double m;
cin>>n>>m;
a[n]=m;
}
cin>>k;
while(k--){
int n;
double m;
cin>>n>>m;
b[n]=m;
}
int cnt=0;
for(int i=0;i<N;i++) {
c[i]=a[i]+b[i];
if(c[i]) cnt++;
}
cout<<cnt;
for(int i=N-1;i>=0;i--){
if(c[i]) printf(" %d %.1lf",i,c[i]);
}
return 0;
}