数组:多项式加法
来源:互联网 发布:java 复制代码 编辑:程序博客网 时间:2024/06/05 04:08
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为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
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 count=0;
boolean choose=true;
int []one=new int [101];
int []two=new int[101];
int[]three=new int[101];
int a,b,i=0,j=0;
boolean mark = true;//用来标记第一个数据
do{
a=in.nextInt();//幂次,
b=in.nextInt();//系数
two[i++]=a;
one[a]+=b;//用幂次当做数组的下标,系数当做数组的值,,把下标相同的值相加。
if(a==0)
{
count++;//循环两次
}
}while(count==0);
do{
a=in.nextInt();//幂次,
b=in.nextInt();//系数
three[j++]=a;
one[a]+=b;//用幂次当做数组的下标,系数当做数组的值,,把下标相同的值相加。
if(a==0)
{
count++;//循环两次
}
}while(count==1);
for(int k=1;k<=i-1;k++)
{
if(!(two[0]>two[k]))//保证第一行输入的幂次最大
{
choose=false;
break;
}
}
for(int k=1;k<=j-1;k++)
{
if(!(three[0]>three[k]))//保证第一行输入的幂次最大
{
choose=false;
break;
}
}
if(choose)//
{
for(int z = 100;z>=0;z--)//输出相加后的多项式
{
if (one[z]!= 0)//输出系数不为0的项
{
if (z == 0)//幂次为0时
{
if (one[z] > 0)
{
if (mark)
{
System.out.print(one[z]);//输出的第一项,不带+号
}
else
{
System.out.print("+"+one[z]);//如果不是输出的第一项要带+号
}
}
else
{
System.out.print("-"+ Math.abs(one[z]));
}
}
else if (z == 1)//幂次为1时
{
if (one[z] > 0)
{
if(one[z]==1) //系数为1时,要输出x
{
if (mark)
{
System.out.print("x");
}
else
{
System.out.print("+"+"x");
}
}
else //系数不为1时,输出时要带系数
{
if (mark)
{
System.out.print(one[z]+"x");
}
else
{
System.out.print("+"+one[z]+"x");
}
}
}
else
{
if(one[z]==-1)
{
System.out.print("-"+"x");
}
else
{
System.out.print("-"+ Math.abs(one[z])+"x");
}
}
}
else
{
if (one[z] > 0)
{
if(one[z]==1)
{
if (mark)
{
System.out.print("x"+z);
}
else
{
System.out.print("+"+"x"+z);
}
}
else
{
if (mark)
{
System.out.print(one[z]+"x"+z);
}
else
{
System.out.print("+"+one[z]+"x"+z);
}
}
}
else
{
if(one[z]==-1)
{
System.out.print("-"+"x"+z);
}
else
{
System.out.print("-"+ Math.abs(one[z])+"x"+z);
}
}
}
mark = false;
}
else //输出幂次为0,系数也为0的和
{
if(z==0&&mark)
System.out.print("0");//为第一个数时,输出0
}
}
}
}
}
- 数组:多项式加法
- 用数组实现多项式加法和乘法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- 多项式加法
- AJAX和JQuery
- 虚拟机VMWare下安装winXP操作系统及安装VMWare Tools
- stl lower_bound,upper_bound的实现;
- JAVA虚拟机简介
- 一步一步实现高仿支付宝金额圆环图
- 数组:多项式加法
- 【计算机视觉】 相机姿态估计之标记检测-Aruco模块常见问题解答 6
- Android国家化(多语言及切换)
- HuffmanTree的构建
- Spring集成redis(Spring Data Redis)
- 【报错】resultMap认知错误
- java中IO流Properties集合
- 常用Linux命令:scp
- PHP判断点是否在不规则多边形中