前言

我之前写过一篇有关解一元一次方程的那些坑的博客,那个题的细节还是比较多的,对于没经验的人呢,确实是各种WAWA大哭。
这里是多项式,按照格式打,看下去,让我们看看有哪些坑吧~~
(也是黄题,稍有麻烦,不算太难)

题目要求

P1067题目链接

分析

我们要明确,最高位固定的情况下,N位一共有N+1项。

首先是单独的常数项或者ax+b两种大情况。
为什么单独拎出来呢?
因为比如说二次项,ax^2,但一次项是ax,不能写成 ax^1。
如果不加以特判的话,开始项就不能得以区分。

在处理细节的时候注意:

  • 开头项的+不显示,但-显示;非开头项的+要作为加号进行连接,这是一个细节。
  • 当系数为0的时候,就一定要去掉这一项(不显示)。
  • 很坑的一个问题是我们可以写x^2+1,不能写 1x^2+1,这不符合习惯。
    (这也是我第一次WA的原因)

在多次项(当次数大于等于2的时候,进行常规判断流程)进行连接的时候,连接用+和-,但负数本身带-,正数不带+,所以要在正数前补“+”,负数则权当忽略不做处理。毕竟负号和减号在连接的时候等价。
要将后面特殊的一次项和常数项进行特殊化处理,当做尾部连接部分连接上去。

再说说Java处理这种问题的一些语法细节。
为了避免多种情况的嵌套,我们可以不做else处理,而是对已有步骤直接进行System.out.println()然后return; main()方法也是一个函数,return即可结束函数。
鉴于大量的运用“+”进行字符串连接效率低(因为要转StringBuilder然后开循环balabala),直接用StringBuilder就好啦~~

感兴趣的可以康康代码,容易理解,Fine~

第一次提交WA掉了,Share一下评测数据3

in
99
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 1 8

out
-x^99 -7x^50 +100x^2+x+8
(请注意我加了两个空格(方便博客的显示),但实际上是没有的,请务必注意)

AC代码(Java语言描述)

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();if (num == 0) {System.out.println();return;}int head = scanner.nextInt();if (num == 1) {System.out.println(head);return;} else if (num == 2) {int rear = scanner.nextInt();if (head == 1) {System.out.print("x");} else if (head == -1) {System.out.print("-x");} else {System.out.print(head + "x");}if (rear > 0) {System.out.println("+" + rear);} else if (rear < 0) {System.out.println(rear);}return;}StringBuilder builder = new StringBuilder();if (head == 1) {builder.append("x^" + num);} else if (head == -1) {builder.append("-x^" + num);} else {builder.append(head + "x^" + num);}for (int i = num-1; i >= 2; i--) {int temp = scanner.nextInt();if (temp == 1) {builder.append("+x^" + i);} else if (temp == -1) {builder.append("-x^" + i);} else if (temp > 0) {builder.append("+" + temp + "x^" + i);} else if (temp < 0) {builder.append(temp + "x^" + i);}}int first = scanner.nextInt();if (first == 1) {builder.append("+x");} else if (first == -1) {builder.append("-x");} else if (first > 0) {builder.append("+" + first + "x");} else if (first < 0) {builder.append(first + "x");}int rear = scanner.nextInt();if (rear > 0) {builder.append("+" + rear);} else if (rear < 0) {builder.append(rear);}System.out.println(builder.toString());scanner.close();}
}

打印多项式的那些坑(洛谷P1067题题解,Java语言描述)相关推荐

  1. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  2. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  3. 计数后打印垂直柱状图(洛谷P1598题题解,Java语言描述)

    前言 这题挺好玩的,打印出来颇有老式MP4播放 ♪Music♪ 的感觉 题目要求 P1598题目链接 分析 这题看着挺爽,问题是怎么实现呢? 我们先是要读进来这四行数据(题干说了就是4行),然后变为c ...

  4. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

  5. 麦森数(洛谷P1045题题解,Java语言描述)

    题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...

  6. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  7. 求子集元素之和(洛谷P2415题题解,Java语言描述)

    题目要求 P2415题目链接 分析 这题我觉得--当个数学题做就好了嘛. 有一个数N的情况:result = 1 * N 有两个数N1.N2的情况:result = 2 * (N1+N2) 有三个数N ...

  8. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)

    题目要求 P2192题目链接 分析 盘一盘各种情况吧: 要被90整除,就必须被10整除,所以必须有0,没0就是-1啊. 要被90整除,一堆5,靠0是没用的,只能是9个5凑一堆儿才有用,有0但凑不够9个 ...

  9. 贪心策略摘果子(洛谷P1478题题解,Java语言描述)

    题目要求 P1478题目链接 分析 本题的低配版题目链接 → 题解 那个题就是纯水题没啥可写的,我除了贴代码无话可说,但这题吧,虽然不算难,但也可一说. 建议大家移步这里 → 精辟题解 这位爷写了本题 ...

最新文章

  1. java获取当月有几天_你真的能在JAVA开发这条路上面一直坚持下去吗?
  2. CNN收购Beme视频分享APP 11个员工也将加入
  3. ITK:创建派生内核DerivativeKernel
  4. mysql5.7 修改密码
  5. VMware Workstation 入门使用
  6. zblog音频MP3播放器插件
  7. UBUNTU下面安装ICE失败记录过程
  8. selenium配置无界面chrome浏览器
  9. 程序员不满薪资拒绝offer,HR怒称:估计你一辈子就是个程序员了!
  10. 发那可g10_fanuc系统中的G10格式会根据输入的数据不同而不同
  11. 计算机win7不断重启,Win7旗舰版系统电脑反复自动重启怎么办?
  12. 第七章 人工智能,7.2 颠覆传统的电商智能助理-阿里小蜜技术揭秘(作者:海青)...
  13. HTML基础课程笔记
  14. 货拉拉数据治理平台建设实践
  15. BlueTeam 应急
  16. pdfsam Enhanced 6中文版
  17. 开发游戏的老王博客常见问题总汇(4月16日更新)
  18. 什么是好代码?怎么写好代码?
  19. 华为机试C语言-Words重量
  20. 尝试用程序记录QQ密码

热门文章

  1. 洛谷 P1754 球迷购票问题
  2. 如何获取codeforces的完整数据
  3. 抽卡时下拉通知栏导致icon丢失
  4. java selenium (二) 环境搭建方法一
  5. winfrom 从网页中通过源代码截取文章
  6. python3 正则表达式模块re相关
  7. 用android制作一个记事本app_用扁平化呈现一个天气APP
  8. matlab中noisbloc,基于小波变换的微弱信号检测技术的研究.doc
  9. n个骰子的点数 java_n个骰子的点数和为s的概率集合输出(Java)
  10. linux rsync 安装教程,linux下的rsync配置和使用教程