CSP历年复赛题-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;
}

 

posted @   五月江城  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示