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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【模拟】P1067 多项式输出

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

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

考點:模擬、字符串

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



題意:輸入系數,輸出多項式。

解法:

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

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

代碼中用到了字符串流stringstream,因為我需要把正整數的正號保留,所以要用到 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; // 系數是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;// 結尾的符號不需要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; }

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。