日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【模拟】P1067 多项式输出

發(fā)布時間:2025/3/21 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【模拟】P1067 多项式输出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://www.luogu.com.cn/problem/P1067

考點:模擬、字符串

這是一道水題,水題能卡人往往是有某些數(shù)據(jù)沒考慮到。



題意:輸入系數(shù),輸出多項式。

解法:

需要把所有特殊情況考慮到,分別是:
-1x 輸出為 -x
+1x 輸出為 x
第一項的系數(shù)為+,不能輸出+號
系數(shù)為0不輸出
x^0僅輸出系數(shù)
x^1輸出為x

我的做法是先不考慮這些特殊情況,把系數(shù)和指數(shù)全部存到字符串,再把特殊情況刪除或替換。這題我沒過是因為 x^1 這種情況我直接替換成x了,而沒有考慮到 x^19 這種情況,為了解決這個問題我給每一項的結(jié)尾加了一個#字符,然后將x^1#替換為x#,這樣就可以了。最后把所有#刪掉即可。

代碼中用到了字符串流stringstream,因為我需要把正整數(shù)的正號保留,所以要用到 std::showpos 這個東西。

#include <bits/stdc++.h> using namespace std; int main() {int n;while (cin >> n) {string s;stringstream ss;for (int i = n; i >= 0; i--) {int x; cin >> x;if (x == 0) continue; // 系數(shù)是0的項不需要ss << showpos << x << noshowpos << "x^" << i << "#";}ss >> s;//cout << s << endl;// x^0刪除if (s.find("x^0") != s.npos) {s.replace(s.find("x^0"), 3, "");}//cout << s << endl;// x^1替換為x BUG!! 比如 x^19 變成 x9if (s.find("x^1#") != s.npos) {s.replace(s.find("x^1#"), 4, "x#");}//cout << s << endl;// -1x +1x 替換為 -x +xwhile (s.find("-1x") != s.npos) {s.replace(s.find("-1x"), 3, "-x");}while (s.find("+1x") != s.npos) {s.replace(s.find("+1x"), 3, "+x");}//cout << s << endl;// 開頭的正號不需要if (s[0] == '+') s = s.erase(0, 1); //cout << s << endl;// 結(jié)尾的符號不需要if (s.size() != 0 && ispunct(s[s.size()-1])) s = s.erase(s.size() - 1);//cout << s << endl << endl;while (s.find("#") != s.npos) s = s.erase(s.find("#"), 1);cout << s << endl;}return 0; }

這種水題雖然沒有難度,但是如果漏算了某些特殊情況,那也只能認(rèn)倒霉了。
這題我的測試用例全部都是指數(shù)在10以內(nèi)的,當(dāng)然就試不出 x^19 這種BUG了。

總結(jié)

以上是生活随笔為你收集整理的【模拟】P1067 多项式输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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