zoukankan      html  css  js  c++  java
  • 多项式加法(模拟)

    题目内容:一个多项式可以表达为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 }
  • 相关阅读:
    NYOJ 260
    NYOJ 271
    [转载]《博客园精华集》Winform筛选结果(共105篇)
    在DataGridView控件中加入ComboBox下拉列表框的实现
    给SQL补充一个查看表结构的存储过程
    编写自定义控件之下拉式属性
    PropertyGrid中的枚举显示为中文(转)
    DataGridView 中合并单元格
    树TreeView控件与DataTable交互添加节点(最高效的方法)
    通过键盘方向键控制TreeView节点的移动
  • 原文地址:https://www.cnblogs.com/acgoto/p/9019814.html
Copyright © 2011-2022 走看看