PAT A1009 Product of Polynomials

来源:互联网 发布:买车app软件 编辑:程序博客网 时间:2024/06/05 16:52
//我的版本的改进
 //哈哈成功ac了
 //思想就是存储第一组输入的,用结构体数组,然后第二组输入的边输入边求出结果,用+=,要注意的是结果数组不需要用结构体了。一是不需要,二是再倒次数输入时只要判断存不存在就行,不需要排序啊之类的
#include<stdio.h>
struct Poly{
    int ex;
    float coe;
};
float C[2001]; //0-2000因为输入的两组数最高次是1000,两个多项式相乘是次数相加系数相乘
int main(){
    int m,n,max,count=0;
    C[2000]={0.0};
    int tempex,tempn;
    float tempcoe,tempc;
    struct Poly A[10];//反正最大也就10项而已
    //    struct Poly C[100];//目测一下,结果C不会超过100项吧,是的,不对,事实上不会超过m*n项
    scanf("%d",&m);
    for(int i=0;i<m;i++){
        //先把A输入到数组中,然后用B挨个相乘相加好了,新的结果可能得放到另外一个数组中,否则影响相加的
        //可以不可以用结构体呢
        scanf("%d%f",&A[i].ex,&A[i].coe);
    }
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%f",&tempex,&tempcoe);
        for(int i=0;i<m;i++){
            //把结果求出来并放置到结果C中
            tempn=A[i].ex+tempex;//注意这里一开始写成了*,其实应该是加
            tempc=A[i].coe*tempcoe;//系数相乘
            C[tempn]+=tempc;
        }
    }
    for(int i=0;i<=2000;i++){
        if(C[i]!=0){
            count++;
            max=i;//这样下次就从0-max遍历即可
        }
    }
    printf("%d",count);
    for(int i=max;i>=0;i--){
        if(C[i]!=0)
        printf(" %d %.1f",i,C[i]);
    }
    return 0;
}
   
0 0
原创粉丝点击