zoukankan      html  css  js  c++  java
  • 洛谷1067 多项式输出 解题报告

    洛谷1067 多项式输出

    本题地址: http://www.luogu.org/problem/show?pid=1067

    题目描述

    一元 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:

    poly1.in
    5 
    100 -1 1 -3 0 10
    
    poly2.in 
    3 
    -50 0 0 1 

    输出样例#1:

    poly1.out
    100x^5-x^4+x^3-3x^2+10
    
    poly2.out
    -50x^3+1 

    说明

    NOIP 2009 普及组 第一题
    对于100%数据,0<=n<=100,-100<=系数<=100

    题解

    模拟

    纯模拟题。步骤比较繁琐,需要分类讨论,if较多。

    还要注意几种特判,“+”“-”号以及系数为“0”“1”的情况都要考虑到。

    当系数为“0”时该项连同符号不再输出(相当于删除),系数为“1”时系数不再输出(省略)。

    细节很关键,乱搞一下还是可以过的。

    下面附上代码。

    代码

    1. program poly;  
    2. var  
    3.   n,i:longint;  
    4.   a:array[1..101] of longint;  
    5. begin  
    6.   readln(n);  
    7.   for i:=to n+do  
    8.     begin  
    9.       read(a[i]);  
    10.       if i=then  
    11.         begin  
    12.           if a[i]=then write('x^',n-i+1);  
    13.           if a[i]=-then write('-x^',n-i+1);  
    14.           if (a[i]<>0) and (a[i]<>1) and (a[i]<>-1) then  
    15.           write(a[i],'x^',n-i+1);  
    16.         end;  
    17.       if (1<i) and (i<n) then  
    18.         begin  
    19.           if a[i]>then write('+',a[i],'x^',n-i+1);  
    20.           if a[i]<-then write(a[i],'x^',n-i+1);  
    21.           if a[i]=then write('+x^',n-i+1);  
    22.           if a[i]=-then write('-x^',n-i+1);  
    23.         end;  
    24.       if i=n then  
    25.         begin  
    26.           if a[i]>then write('+',a[i],'x');  
    27.           if a[i]<-then write(a[i],'x');  
    28.           if a[i]=then write('+x');  
    29.           if a[i]=-then write('-x');  
    30.         end;  
    31.       if i=n+then  
    32.         begin  
    33.           if a[i]>then write('+',a[i]);  
    34.           if a[i]<then write(a[i]);  
    35.         end;  
    36.     end;  
    37. end.  

    (本文系笔者原创,未经允许不得转载)

    博文系博主原创,转载请注明出处 o(* ̄▽ ̄*)ブ 更多博文源自https://www.cnblogs.com/yzm10
  • 相关阅读:
    Telnet远程测试
    数据库笔记
    gcc 链接不到 函数实现, undefined reference to xxx
    usb2ttl 引脚定义
    ip v4 地址中 局域网地址范围
    vdi 磁盘文件转换为 vmdk文件的命令
    tftp 命令使用
    无法通过vnc连接到局域网内的树莓派
    镜像服务网站
    C语言 scanf 输入浮点数的用法
  • 原文地址:https://www.cnblogs.com/yzm10/p/4747451.html
Copyright © 2011-2022 走看看