zoukankan      html  css  js  c++  java
  • Java实现 洛谷 多项式输出

    题目描述
    一元nn次多项式可用如下的表达式表示:

    在这里插入图片描述

    其中,a_ix^ia
    i
    ​ x
    i
    称为ii次项,a_ia
    i
    ​ 称为ii次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

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

    多项式中只包含系数不为00的项。

    如果多项式nn次项系数为正,则多项式开头不出现“+”号,如果多项式nn次项系数为负,则多项式以“-”号开头。

    对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于00次的项,其系数的绝对值为11,则无需输出 11)。如果xx的指数大于11,则接下来紧跟的指数部分的形式为“x^bx
    b
    ”,其中 b b为 x x的指数;如果 xx的指数为 11,则接下来紧跟的指数部分形式为“xx”;如果 xx 的指数为 00,则仅需输出系数即可。

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

    输入输出格式
    输入格式:
    输入共有 22 行

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

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

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

    输入输出样例
    输入样例#1:
    5
    100 -1 1 -3 0 10
    输出样例#1:
    100x5-x4+x3-3x2+10
    输入样例#2:
    3
    -50 0 0 1
    输出样例#2:
    -50x^3+1

    import java.util.Scanner;
    
    
    public class duoxiangshishuchu2 {
    private static Scanner cin;
    	
    	public static void main(String args[]) throws Exception {
    		cin = new Scanner(System.in);
    		int x = cin.nextInt();
    		StringBuilder sb = new StringBuilder("");
    		int tmp;
    		for(int i=0;i<=x;i++) {
    			tmp = cin.nextInt();
    			if(0 != tmp) {
    				if(0 == (x-i)){
    					if(tmp>0) {
    						sb.append(String.format("+%d", tmp*1));
    					}else {
    						sb.append(String.format("%d", tmp*1));
    					}
    				}else if(1 == (x-i)){
    					if(1 == tmp) {
    						sb.append("+x");
    					}else if(-1 == tmp) {
    						sb.append("-x");
    					} else if(0 <= tmp) {
    						sb.append(String.format("+%dx", tmp));
    					}else {
    						sb.append(String.format("%dx", tmp));
    					}
    				}else {
    					if(1 == tmp) {
    						sb.append(String.format("+x^%d", x-i));
    					}else if(-1 == tmp) {
    						sb.append(String.format("-x^%d", x-i));
    					} else if(0 <= tmp) {
    						sb.append(String.format("+%dx^%d", tmp,x-i));
    					}else {
    						sb.append(String.format("%dx^%d", tmp,x-i));
    					}
    				}
    			}
    		}
    		String prefix = sb.substring(0, 1);
    		if(prefix.equals("+") ) {
    			System.out.println(sb.substring(1, sb.length()));
    		}else {
    			System.out.println(sb.toString());
    		}
    	}
    
    	
    
    
    }
    
    
  • 相关阅读:
    使用openssl实现ECDSA签名以及验证功能(附完整测试源码)
    【转载】浅谈Linux内存管理机制
    【转载】Abstract Factory Step by Step --- 抽象工厂
    【转载】动态规划:从新手到专家
    Windows Container 和 Docker:你需要知道的5件事
    十年
    Docker,容器,虚拟机和红烧肉
    新的用户故事待办列表就是一副地图
    MarkDown/reST 文档发布流水线
    docker4dotnet #5 使用VSTS/TFS搭建基于容器的持续交付管道
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079474.html
Copyright © 2011-2022 走看看