【PAT甲级 多项式相乘】1009 Product of Polynomials (25 分) C++ 全部AC
生活随笔
收集整理的這篇文章主要介紹了
【PAT甲级 多项式相乘】1009 Product of Polynomials (25 分) C++ 全部AC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
思路
維護三個數組:
- arrA[1001]存儲第一行數據
- arrB[1001]存儲第二行數據
- c[1000000]存儲計算結果
數組下標表示多項式的指數,數組存的內容表示多項式的系數
將arrA[1001]的每個數分別與arrB[1001]中的每個數相乘,將結果放在c數組的兩個下標相加的的位置(與c數組的原數相加),最后得到的c數組就是結果多項式。然后按照題目要求的格式輸出即可。
題解C++
#include<iostream> #include<stdio.h> using namespace std; #define SIZE 1000 //兩多項式相乘問題 int main() {//輸入第一行int totalA;cin >> totalA;double arrA[1001] = { 0 };for (int i = 0; i < totalA; i++) {int n;double a;cin >> n >> a;arrA[n] = a;}//輸入第二行int totalB;cin >> totalB;double arrB[1001] = { 0 };for (int i = 0; i < totalB; i++) {int n;double a;cin >> n >> a;arrB[n] = a;}//逐個相乘,結果存在額外的數組double c[SIZE] = { 0 };//提交時放大SIZEfor (int i = 0; i < 1001; i++) {for (int j = 0; j < 1001; j++) {c[i + j] += arrA[i] * arrB[j];}}//按照要求輸出int total = 0;for (int i = SIZE - 1; i >= 0; i--) {if (c[i] != 0)total++;}cout << total << " ";for (int i = SIZE - 1, count = 0; i >= 0; i--) {if (c[i] != 0) {if (count == total - 1) {printf("%d %.1f", i, c[i]);}else {printf("%d %.1f ", i, c[i]);count++;}}}system("pause"); }總結
以上是生活随笔為你收集整理的【PAT甲级 多项式相乘】1009 Product of Polynomials (25 分) C++ 全部AC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PAT甲级 最长公共子串】1007 M
- 下一篇: 【PAT甲级 排序】1012 The B