http://pat.zju.edu.cn/contests/pat-practise/1009
#include <stdio.h> #include <cmath> int N; double Poly[2][1002],sPoly[2002]; int main() { for(int i=0;i<2;i++){ scanf("%d",&N); for(int j=0;j<N;j++){ int a; double b; scanf("%d%lf",&a,&b); Poly[i][a]+=b; } } int i,j; for(i=1000;i>=0;i--) for(j=1000;j>=0;j--){ if(fabs(Poly[0][i])>1e-5&&fabs(Poly[1][j])>1e-5) sPoly[i+j]+=Poly[0][i]*Poly[1][j]; } int m=0; for(i=2000;i>=0;i--){ if(fabs(sPoly[i])>1e-5) m++; } printf("%d",m); for(i=2000;i>=0;i--){ if(fabs(sPoly[i])>1e-5) printf(" %d %.1lf",i,sPoly[i]); } putchar('\n'); }