pat 甲級1009.Product of Polynomials (25)(c 語言實現)
阿新 • • 發佈:2019-01-30
#include<stdio.h> #include<stdlib.h> #define MAXN 1005 typedef struct m { int k; float kn; }num; int cmp(const void*a,const void*b) { num s1=*(num*)a; num s2=*(num*)b; return s2.k-s1.k; } main() { int n,m,z; num a[MAXN],b[MAXN],c[MAXN]; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d %f",&a[i].k,&a[i].kn); } scanf("%d",&m); for(int i=0;i<m;i++) { scanf("%d %f",&b[i].k,&b[i].kn); } int count=0,flag,l=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { flag =0; for(z=0;z<count;z++) { if((a[i].k+b[j].k)==c[z].k) {c[z].kn+=a[i].kn*b[j].kn; if(c[z].kn==0.0){//測試點1wa 忘了可能係數為0,補救一下 c[z].k=-1; //純粹不想用陣列重寫 l++; } flag=1;} } if(!flag) { c[count].k=a[i].k+b[j].k; c[count].kn=a[i].kn*b[j].kn; count++; } } } qsort(c,count,sizeof(num),cmp); printf("%d",count-l); for(int i=0;i<count;i++) { if(c[i].k>=0) printf(" %d %.1f",c[i].k,c[i].kn); } }