zoukankan      html  css  js  c++  java
  • 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
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner in = new Scanner(System.in);
            int[] a=new int[101];//存放第一个多项式
            int[] b=new int[101];//存放第二个多项式
            int[] c=new int[101];//存放合并后的多项式
            int count=0;//用来统计输出的项数
            int n=0;//n表示幂次
            int x=0;//x表示系数
    //        得到第一个多项式
            do
            {
                n=in.nextInt();
                x=in.nextInt();
                a[n]=x;
            }while(n!=0);
    //        得到第二个多项式
            do
            {
                n=in.nextInt();
                x=in.nextInt();
                b[n]=x;
            }while(n!=0);
    //        合并多项式
            for(int i=0;i<101;i++)
            {
                c[i]=a[i]+b[i];
            }
    //        输出幂次为2到100的项
            for(int i=100;i>1;i--)
            {
                if(c[i]!=0)//如果系数不为零
                {
                    if(count>0)//如果不是输出的第一项
                    {
                        if(c[i]>0)//系数大于零要输出+号
                        {
                            System.out.print("+");
                        }
                    }
                    if(c[i]!=1&&c[i]!=-1)//如果系数为+-1的话,不能把1输出来,所以要单独处理
                    {
                        System.out.print(c[i]+"x"+i);
                    }else if(c[i]==1)//系数为1时
                    {
                        System.out.print("x"+i);
                    }else//系数为-1时
                    {
                        System.out.print("-x"+i);
                    }
                    count++;
                }
                else//系数为零不输出
                {
                    continue;
                }
            }
    //        开始处理幂次为1的项
            if(c[1]!=0)
            {
                if(count>0)//非首项
                {
                    if(c[1]>0)//正项要输出+号
                    {
                        System.out.print("+");
                    }
                }
                if(c[1]!=1&&c[1]!=-1)//系数为+-1同样要单独处理
                {
                    System.out.print(c[1]+"x");
                }
                else if(c[1]==1)//系数为1
                {
                    System.out.print("x");
                }
                else//xi数为-1时
                {
                    System.out.print("-x");
                }
                count++;
            }
    //        开始处理幂次为0的项
            if(c[0]!=0)
            {
                if(count>0)//非首项
                {
                    if(c[1]>0)//正项要输出+号
                    {
                        System.out.print("+");
                    }
                }
                System.out.print(c[0]);
                count++;
            }
    //        如果之前一个项都没有输出
            if(count==0)
            {
                System.out.print("0");
            }
        }
    }
    

      

  • 相关阅读:
    mysq 日期相减
    说说时间观与时间管理——北漂18年(71)
    ionic之切换开关
    ionic之单选框
    SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录
    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.5.2.2 autocommit, Commit, and Rollback
    14.5.2 事务隔离级别
    对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
    mysql explain 解释
  • 原文地址:https://www.cnblogs.com/dreamshows/p/10067635.html
Copyright © 2011-2022 走看看