PAT A1002 A+B for Polynomials(25)

AC代码
转载自https://www.cnblogs.com/zjutJY/p/9413766.html

#include <stdio.h>
#include<string.h>
//输入:两行数据,每行表示一个多项式:第一个数字表示非零项的数目,
//后面每两个数表示一项,分别表示幂次和系数。
//输出:两个多项式的和,格式与输入一样

int main(){

    const int MAX_N=1111;
    double a=0.0;
    int k,n=0,count=0,i;//k:输入的非零项数,n:幂次,a:系数,count:和的非零项数
    double p[1111]={0};//声明时使用{0}初始化为全0
    //double p[MAX_N];
    //memset(p,0,MAX_N);//使用memset方法,注意要加string.h头文件 
    
//    for(i=MAX_N-1;i>=0;i--){
//        printf("%.1f",p[i]); 
//    }    
    
    //输入第一行数据 
    scanf("%d",&k);
    for(i=0;i<k;i++){
        scanf("%d %lf",&n,&a);
        p[n]+=a;
    }
    
    //输入第二行数据 
    scanf("%d",&k);
    for(i=0;i<k;i++){
        scanf("%d %lf",&n,&a);
        p[n]+=a;
    }
    
    for(i=0;i<MAX_N;i++){
        if(p[i]){
            count++;
        }
    } 
    
    printf("%d",count);
    for(i=MAX_N-1;i>=0;i--){
        if(p[i]){
            printf(" ");
            printf("%d %.1f",i,p[i]);
        }
    }
    
    return 0;
}

自己写的, 一个都没有通过

#include <cstdio>
#include <algorithm>
#define N 1010

using namespace std;

int main() {
    #ifdef ONLINE_JUDGE
    #else
        freopen("1.txt", "r", stdin);
    #endif // ONLINE_JUDGE
    double num[N] = {0.0};
    int big = 0, t = 0;
    for(int i = 0; i < 2; i++) {
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++) {
            int a;
            double b;
            scanf("%d %1f", &a, &b);
            num[a] += b;
            //if(big < a) swap(big, a);
            //t++;
        }
    }
    for(int i = 0; i < N; i++) {
        if(num[i] != 0) {
            t++;
        }
    }

    printf("%d", t);
    for(int i = N; i >= 0; i--) {
        if(num[i] != 0.0){
            printf(" %d %.1f", i, num[i]);
        }
    }
    return 0;
}
上一篇:牛客暑期营1F Solution


下一篇:『动态规划·状态压缩·概率期望』礼物