注意一点:相应指数的系数之和为0的情况。
/**
* 1、如果同一指数的系数之和为0.0, 则不输出此项。
* 2、例子
*Input: 2 1 0.5 2 0.6
* 2 1 -0.5 2 0.5
* Output:1 2 1.1
*/
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
float[] coefficients = new float[1001];// key(指数) - value(系数)
Scanner sc = new Scanner(System.in);
int maxIndex = 0; // 记录最大指数 减少遍历次数
int exponent;//指数
float coefficient;//系数
int multiterm = 0;//记录项数
int a = sc.nextInt();
multiterm += a;
for (; a > 0; a--) {
exponent = sc.nextInt();
if (maxIndex < exponent)
maxIndex = exponent;
coefficient = sc.nextFloat();
coefficients[exponent] = coefficient;
}
a = sc.nextInt();
for (; a > 0; a--) {
exponent = sc.nextInt();
if (maxIndex < exponent)
maxIndex = exponent;
if(coefficients[exponent] == 0.0)
multiterm++;
coefficient = sc.nextFloat();
coefficients[exponent] += coefficient;
if(coefficients[exponent] == 0.0) {
multiterm--;
continue;
}
//实现四舍五入 没有也可以
//coefficients[exponent] = (float) (Math.round(coefficients[exponent] * 10) / 10.0);
}
sc.close();
System.out.printf("%d",multiterm);
for (int i = maxIndex; i >= 0; i--) {
if(coefficients[i] != 0.0)
System.out.printf(" %d %.1f",i,coefficients[i]);
}
}
}
本文介绍了一种处理多项式表达式的算法,该算法能够合并相同指数的系数,并且在系数之和为零的情况下忽略该指数项。通过输入两个多项式的指数和系数,算法将输出合并后的多项式项数及各非零系数对应的指数。
505

被折叠的 条评论
为什么被折叠?



