• 多项式加法(模拟)


    题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20;现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。
    输入格式:总共要输入两个多项式,每个多项式的输入格式如下:每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。
    输出格式:从最高幂开始依次降到0幂,如:2x6+3x5+12x3-6x+20;注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。
    输入样例:
    6 2
    5 3
    3 12
    1 6
    0 20
    6 2
    5 3
    2 12
    1 6
    0 20
    输出样例:4x6+6x5+12x3+12x2+12x+40
    时间限制:500ms内存限制:32000kb
    解题思路:字符串处理,基础题,详解看注解。

    AC代码:

     1 import java.util.Scanner;
     2 public class Main {
     3     public static void main(String[] args) {
     4         Scanner scan = new Scanner(System.in);
     5         int[] Pow = new int[101];//Pow数组记录系数,下标是幂指数
     6         int index,val,MaxIndex=-1;//先标记为-1,表示找不到
     7         for(int i=1;i<=2;++i) {//遍历两次,输入两个多项式
     8             while(true) {
     9                 index=scan.nextInt();
    10                 val = scan.nextInt();
    11                 Pow[index] += val;
    12                 if(index==0)break;//当输入幂指数是0,表示完成一个多项式的输入,跳出
    13             }
    14         }
    15         for(int i=100;i>=0;--i){//找到第一个非0系数的幂指数
    16             if(Pow[i]!=0){
    17                 MaxIndex=i;//将第一个非0系数的幂指数给MaxIndex后跳出
    18                 break;
    19             }
    20         }
    21         if(MaxIndex==-1){//表示整个多项式为0,直接输出0即可
    22             System.out.println(0);
    23         }
    24         else if(MaxIndex==0){//如果0次幂系数不为0,说明非0次幂的系数都为0,直接输出0次幂的系数
    25             System.out.println(Pow[MaxIndex]);
    26         }
    27         else{//先输出第一个非0次幂系数的项
    28             if(Pow[MaxIndex]>1||Pow[MaxIndex]<-1)System.out.print(Pow[MaxIndex]+"x");//如果系数不是1或-1且不是0,直接输出第一项的系数和x
    29             else if(Pow[MaxIndex]==1)System.out.print("x");//如果系数是1,输出x
    30             else if(Pow[MaxIndex]==-1)System.out.print("-x");//如果系数是-1,输出-x
    31             if(MaxIndex!=1)System.out.print(MaxIndex);//如果此时的幂指数不是1,接着就可以输出幂指数
    32             for(int i=MaxIndex-1;i>0;--i){//处理除首尾外中间的部分,因为已经有第一项了,所以接下来遇到系数是正数,前面可以直接输出'+'
    33                 if(Pow[i]>1)System.out.print("+"+Pow[i]+"x");//当系数大于1时
    34                 else if(Pow[i]==1)System.out.print("+x");//当系数是1时,直接输出+x
    35                 else if(Pow[i]==-1)System.out.print("-x");//当系数是-1时,直接输出-x
    36                 else if(Pow[i]<-1)System.out.print(Pow[i]+"x");//当系数小于-1时
    37                 else continue;//这句话其实是多余的,为了呼应美hhh~,即系数为0时,直接跳过
    38                 if(Pow[i]!=0 && i>1)System.out.print(i);    //如果系数不为0且幂指数不为1,才可以输出这个幂指数    
    39             }//最后处理尾巴即0次幂,这时候就不用管系数是不是1或-1,因为最后一项是不含x的,所以只需按照剩下的规则格式输出即可
    40             if(Pow[0]>0)System.out.print("+"+Pow[0]);
    41             if(Pow[0]<0)System.out.print(Pow[0]);
    42         }
    43         scan.close();
    44     }
    45 }
  • 相关阅读:
    Airodump-ng——Description
    kali 2.0 — WIFI——commands
    国外整理的一套在线渗透测试资源合集
    A collection of android security related resources.
    cBPM
    cBPM-android
    CentOS7 安装 gcc-4.9.0
    install Android Studio 1.3 —— VM Acceleration on Linux
    08嵌入式—蔺小会—初创公司需要怎样的管理模式?
    Nodejs开发框架Express4.x开发手记
  • 原文地址:https://www.cnblogs.com/acgoto/p/9019814.html
Copyright © 2020-2023  润新知