• 记一次吐血的暴力模拟qaq 【多项式输出】


    题目描述

    一元 n 次多项式可用如下的表达式表示:

    其中,aixi称为 i 次项,ai 称为 i 次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

    1. 多项式中自变量为 x,从左到右按照次数递减顺序给出多项式。

    2. 多项式中只包含系数不为 0 的项。

    3. 如果多项式 n 次项系数为正,则多项式开头不出现“+”号,如果多项式 n 次项系

    数为负,则多项式以“-”号开头。

    4. 对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项

    系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于 0 次的项,

    其系数的绝对值为 1,则无需输出 1)。如果 x 的指数大于 1,则接下来紧跟的指数部分的形

    式为“x^b”,其中 b 为 x 的指数;如果 x 的指数为 1,则接下来紧跟的指数部分形式为“x”;

    如果 x 的指数为 0,则仅需输出系数即可。

    5. 多项式中,多项式的开头、结尾不含多余的空格。

    输入输出格式

    输入格式:

    输入共有 2 行

    第一行 1 个整数,n,表示一元多项式的次数。

    第二行有 n+1 个整数,其中第 i 个整数表示第 n-i+1 次项的系数,每两个整数之间用空

    格隔开。

    输出格式:

    输出共 1 行,按题目所述格式输出多项式。

    输入输出样例

    输入样例#1: 复制
    5 
    100 -1 1 -3 0 10
    输出样例#1: 复制
    100x^5-x^4+x^3-3x^2+10
    输入样例#2: 复制
    3 
    -50 0 0 1 
    
    输出样例#2: 复制
    -50x^3+1 


    我坚信
    骗分过样例
    暴力出奇迹





    然而...

    我的代码...
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main(){
     4     int n;
     5     long long sz;
     6     cin>>n;
     7     for(int i=n;i>=0;i--){
     8         cin>>sz;
     9         if (i==0){
    10             if(sz>0) cout<<'+'<<sz;
    11             if(sz<0) cout<<sz;
    12             return 0;
    13         }
    14         if(sz!=0){
    15             if(i==1){
    16                 if(sz>0){
    17                     if(sz!=1) cout<<'+'<<sz<<"x";
    18                     else  cout<<"+x";
    19                     }
    20                 
    21                 if(sz<0) {
    22                     if(sz!=-1)    cout<<sz<<"x";
    23                     else  cout<<"-x";
    24                     }
    25                 continue;
    26             }
    27             if(i!=n){
    28                 if(sz>0){
    29                     if(sz!=1) cout<<'+'<<sz<<"x^"<<i;
    30                     else  cout<<"+x^"<<i;
    31                     }
    32                 
    33                 if(sz<0) {
    34                     if(sz!=-1)    cout<<sz<<"x^"<<i;
    35                     else  cout<<"-x^"<<i;
    36                     }
    37             continue;
    38                 }
    39             if(i==n) {
    40             if(sz>0){
    41                 if(sz!=1) cout<<sz<<"x^"<<i;
    42                 else  cout<<"x^"<<i;
    43             }
    44             if(sz<0) {
    45                 if(sz!=-1)    cout<<sz<<"x^"<<i;
    46                 else  cout<<"-x^"<<i;
    47             }
    48             continue;
    49         }
    50         }  
    51         sz=0;
    52     }
    53     return 0;
    54 }

    大神代码

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main(){
     4     int n,a;
     5     cin>>n;
     6     for(int i=n;i>=0;i--){
     7         cin>>a;
     8         if(a){    判0系数
     9             if(i!=n&&a>0)cout<<"+";    根据正负、是否为最高此项决定加号
    10             if(abs(a)>1||i==0)cout<<a;    输出系数(系数不为正负1或指数为0)
    11             if(a==-1&&i)cout<<"-";    -1系数特判,常数项已特判
    12             if(i>1)cout<<"x^"<<i;    二次及以上输出指数
    13             if(i==1)cout<<"x";    一次项
    14         }
    15     }
    16 }

    心情复杂

    我为什么要做这道题

    人类的本质是复读机.jpg

  • 相关阅读:
    [翻译]TempDB剩余空间监视与纠错
    SQL Server 检查SQL连接错误问题的步骤
    SQL 根据父节点查询所有子节点
    ASP.NET 回滚事务
    SQL 根据子节点查询所有父节点
    .Net 夯实基础
    WCF学习笔记(六)WCF基础
    离下班还有几分钟,做个小玩意儿
    c#预处理指令
    .Net垃圾回收
  • 原文地址:https://www.cnblogs.com/luv-letters/p/8477790.html
Copyright © 2020-2023  润新知