1002. A+B for Polynomials (25)[C语言]

xiaoxiao2021-02-28  100

1002. 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

#include <stdio.h> #include <stdlib.h> int main(){ int a1[11]; double a2[11]; int b1[11]; double b2[11]; int c1[22]; double c2[22]; int n = 0 , m = 0 ,nm = 0 ; int i = 0 , j = 0 ,k = 0 ; int tmpn ; double tmpm ; int num = 0; int exist = 0 ; scanf("%d",&n); while(i!=n){ scanf("%d %lf",&a1[i],&a2[i]); i++; } scanf("%d",&m); i = 0; while(i!=m){ scanf("%d %lf",&b1[i],&b2[i]); i++; } for(i = 0 ; i < n ; i++){ exist = 0 ; for(j = 0 ; j < m ; j++){ if(a1[i] == b1[j]){ exist = 1; nm++; if((a2[i] + b2[j])==0){ b2[j] = 0; break; } c1[num] = a1[i]; c2[num]=a2[i]+ b2[j]; num++; b2[j] = 0; break; } } if(exist==0){ c1[num] =a1[i]; c2[num]=a2[i]; num++; } } if(nm < m){ for(j = 0 ; j < m ; j++){ if(b2[j] != 0){ c1[num] = b1[j]; c2[num] = b2[j]; num++; } } } printf("%d",num); for(j = 0 ; j < num ; j ++) { for(k=j;k<num ; k++){ if(c1[j] < c1[k]){ tmpn = c1[j]; c1[j] = c1[k]; c1[k] = tmpn ; tmpm = c2[j]; c2[j] = c2[k]; c2[k] = tmpm ; } } printf(" %d %.1f", c1[j],c2[j]); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-63415.html

最新回复(0)