PATグレードA ——1002。多項式のA + B(25)(C ++)

問題解決のアイデア

配列float map [1001] = {0.0}をハッシュテーブルとして作成し、配列のインデックスを使用してインデックスを表し、対応する位置に格納されている要素を使用して係数を表します。
最初に、cin、coutの標準入出力を使用しました(標準出力では、小数点の1桁が予約されています:cout << setiosflags(ios :: fixed)<< setprecision(1)<< endl;)、次にscanf、 printfの入力と出力はより簡潔です。

実装コード

#include <iostream>
using namespace std;

int main() {
    
    
    float c[1001] = {
    
    0};
    int m, n, t = 0;
    float num = 0.0;
    scanf("%d", &m);
    for (int i = 0; i < m; i++) {
    
    
        scanf("%d%f", &t, &num);
        c[t] += num;
    }
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
    
    
        scanf("%d%f", &t, &num);
        c[t] += num;
    }
    int cnt = 0;
    for (int i = 0; i < 1001; i++) {
    
    
        if (c[i] != 0) cnt++;
    }
    printf("%d", cnt);
    for (int i = 1000; i >= 0; i--) {
    
    
        if (c[i] != 0) {
    
    
            printf(" %d %.1f", i, c[i]);
        }
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/t0be_Better/article/details/108571861