zoukankan      html  css  js  c++  java
  • [patl2-018]多项式A除以B

    解题关键:多项式除法的模拟。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<iostream>//解法有些问题,应该用链表解,因为题目数据是整形范围
    #include<cmath>
    #define maxn 1000006
    using namespace std;
    typedef long long ll;
    int maxa=-1,maxb=-1;
    double a[maxn],b[maxn],c[maxn];
    int clearzero(double *a,int ma){
        int cnt=0;
        for(int i=ma;i>=0;i--){
            if(fabs(a[i])>=0.05) cnt++;
        }
        return cnt;
    }
    void output(int cnt,double *a,int ma){
        if(cnt==0){
            printf("0 0 0.0");
        }else{
            printf("%d",cnt);
            for(int i=ma;i>=0;i--){
                if(fabs(a[i])>=0.05) printf(" %d %.1lf",i,a[i]);
            }
        }
    }
    int main(){
        int n,m,t1;
        double t2;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>t1>>t2;
            a[t1]=t2;
            maxa=max(maxa,t1);
        }
        cin>>m;
        for(int i=0;i<m;i++){
            cin>>t1>>t2;
            b[t1]=t2;
            maxb=max(maxb,t1);
        }
        for(int i=maxa;i>=maxb;i--){
            c[i-maxb]=a[i]/b[maxb];
            for(int j=maxb;j>=0;j--){
                a[j+i-maxb]-=c[i-maxb]*b[j];
            }
        }
        
        
        int cnt1,cnt2;
        cnt1=clearzero(c,maxa-maxb);//
        cnt2=clearzero(a,maxb);//余数
        
        output(cnt1,c,maxa-maxb);
        printf("
    ");
        output(cnt2,a,maxb);
        
        return 0;
    }
  • 相关阅读:
    Python开发之路
    openstack系列阅读目录
    linux基础
    PEP8规范
    我真的还是18岁的那个我
    为什么很多IT公司不喜欢进过培训机构的人呢?
    GRE与VXLAN
    VLAN模式
    网络虚拟化基础一:linux名称空间Namespaces
    四:OVS+GRE之网络节点
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/8531802.html
Copyright © 2011-2022 走看看