洛谷题单指南-模拟和高精度-P1067 [NOIP2009 普及组] 多项式输出
原题链接:https://www.luogu.com.cn/problem/P1067
题意解读:
模拟法依次输出多项式内容即可,但是需要考虑的周全,主要有以下关键点:
1、系数为0时不输出多项式
2、第一个符号,只有负号才输出
3、次数不为0时,不输出为1的系数;次数为0时,输出所有系数
4、次数为1时,不输出次数;次数为0时不输出x^次数;次数大于1时,才输出完整x^次数
100分代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
string result = "";
int a;
bool first = true; //是否第一次输出符号
for(int i = 1; i <= n + 1; i++)
{
cin >> a;
int k = n - i + 1; //多项式的次数
if(a) //如果系数不为0才输出
{
if(first)
{
if(a < 0) cout << "-"; //如果第一次输出符号,只输出负号
first = false; //同时改变条件变成不是第一次
}
else cout << (a > 0 ? '+' : '-'); //如果不是第一次输出符号,正负都输出
if(abs(a) != 1 || !k) cout << abs(a); //系数绝对值不为1,或者次数是0,输出系数绝对值
if(k == 1) cout << "x"; //次数为1,只输出x
if(k > 1) cout << "x^" << k; //次数大于1,输出x^次数
}
}
return 0;
}