日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!

發(fā)布時(shí)間:2023/12/4 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:題目

設(shè)計(jì)函數(shù)分別求兩個(gè)一元多項(xiàng)式的乘積與和。

輸入格式:
輸入分2行,每行分別先給出多項(xiàng)式非零項(xiàng)的個(gè)數(shù),再以指數(shù)遞降方式輸入一個(gè)多項(xiàng)式非零項(xiàng)系數(shù)和指數(shù)(絕對(duì)值均為不超過1000的整數(shù))。數(shù)字間以空格分隔。

輸出格式:
輸出分2行,分別以指數(shù)遞降方式輸出乘積多項(xiàng)式以及和多項(xiàng)式非零項(xiàng)的系數(shù)和指數(shù)。數(shù)字間以空格分隔,但結(jié)尾不能有多余空格。零多項(xiàng)式應(yīng)輸出0 0。

輸入樣例:

4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1

輸出樣例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 5 20 -4 4 -5 2 9 1 -2 0

二:補(bǔ)充測(cè)試用例

測(cè)試點(diǎn)2:

2 1 2 1 0 2 1 2 -1 0

測(cè)試用力3:

2 -1000 1000 1000 0 2 1000 1000 -1000 0

測(cè)試用例4:

0 0 1 2 3

三:思路

思路:用map<int,int>進(jìn)行 存儲(chǔ)數(shù)據(jù);在處理乘積的時(shí)候 一個(gè)系數(shù) 對(duì)應(yīng)一個(gè)指數(shù),
若指數(shù)相同 對(duì)系數(shù)進(jìn)行累加
處理多項(xiàng)式和的運(yùn)算同理

四:上碼

/**思路:用map<int,int>進(jìn)行 存儲(chǔ)數(shù)據(jù);在處理乘積的時(shí)候 一個(gè)系數(shù) 對(duì)應(yīng)一個(gè)指數(shù),若指數(shù)相同 對(duì)系數(shù)進(jìn)行累加 */ #include<bits/stdc++.h> using namespace std;int main(){int N,M;int arr1[1001],arr2[1001]; // map<int,int>m;std::map<int, int, std::greater<int> > m,m2; //map默認(rèn)的遞增 ,這樣改成遞減的 //在創(chuàng)造map時(shí),增加參數(shù) **std::greater<int>**,就變成增加map<int,int>::iterator t; cin >> N;for(int i = 0; i < 2 * N; i++){int nums;cin >> nums;arr1[i] = nums;}cin >> M;for(int i = 0; i < 2 * M; i++){int nums;cin >> nums;arr2[i] = nums; }// 4 3 4 -5 2 6 1 -2 0 // 3 5 20 -7 4 3 1//計(jì)算乘積 for(int i = 0; i < 2 * N - 1; i = i + 2){for(int j = 0; j < 2 * M - 1; j = j + 2){int temp1 = arr1[i + 1] + arr2[j + 1]; //指數(shù)相加 int temp2 = arr1[i] * arr2[j];//系數(shù)相乘 m[temp1] += temp2;//一個(gè)指數(shù) 對(duì)應(yīng)系數(shù)(如果有指數(shù)相同的則累加) }}int flag = 0; if(N == 0 || M == 0){cout << "0 0";}else{for(t = m.begin(); t != m.end(); t++){if(flag == 0 && t->second != 0)//這里的t->second != 0 說的是系數(shù)不為0,一旦為0,就什么也不輸出 cout << t->second << ' ' << t->first;else if(t->second != 0){cout << ' ' << t->second << ' ' << t->first; } flag = 1;} }cout << endl;//計(jì)算多項(xiàng)式的和for(int i = 0; i < 2 * N - 1; i = i + 2){m2[arr1[i+1]] = arr1[i]; } for(int i = 0; i < 2 * M - 1; i = i + 2){m2[arr2[i+1]] += arr2[i];//如果遇見指數(shù)相同的系數(shù)相加 }int flag1 = 0; int count = 0;if(M == 0 && N == 0){cout << "0 0";}else{for(t = m2.begin(); t != m2.end(); t++){if(flag1 == 0 && t->second != 0)cout << t->second << ' ' << t->first;else if(t->second != 0){cout << ' ' << t->second << ' ' << t->first; } flag1 = 1;if(t->second == 0){count++;}} }if(count == m2.size()){//測(cè)試點(diǎn)三cout << "0 0";}} //測(cè)試用例子 2(測(cè)試點(diǎn)2) //2 1 2 1 0 //2 1 2 -1 0//測(cè)試點(diǎn)3用例子 // 2 -1000 1000 1000 0 // 2 1000 1000 -1000 0//測(cè)試點(diǎn)4的例子 // 0 // 0 1 2 3

五:知識(shí)速遞(如果對(duì)于map的用法不了解的兄弟們,可以學(xué)一下啊)

map的基本用法

最后加油Boy!!! 刷題源于熱愛 , 順便服務(wù)與以后的工作,學(xué)到老,刷到老!!!!!!!!!!

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。