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");
            }
        }
    }
    

      

  • 相关阅读:
    CSP内容安全策略总结及如何抵御 XSS 攻击
    CORS跨域资源共享总结
    web安全总结
    小知识随手记(八)
    内存泄漏问题总结
    Vue中插槽slot的使用
    Git常用命令、及常见报错处理:You have not concluded your merge (MERGE_HEAD exists)、清理无效的远程追踪分支
    render函数、createElement函数与vm.$slots
    Redis集群(二):Redis的安装
    Shell命令_文件系统常用命令df、du
  • 原文地址:https://www.cnblogs.com/dreamshows/p/10067635.html
Copyright © 2011-2022 走看看