Curso: baseado em zero aprender a linguagem Java ( Weng Kai )
além polinomial
Título Conteúdo:
Pode ser expresso como um coeficiente polinomial de cada potência de x e o produto, tais como: 2x6 + 3x5 + 12x3 + 6x + 20
Agora, você tem que ler o programa em dois polinômios, então a saída destes dois polinômios, isto é, o coeficiente da potência correspondente e, em seguida, adicionar a saída. O poder do programa de processar até 100.
Formatos de entrada:
Para introduzir um total de dois polinómios, cada formato de entrada polinómio é o seguinte:
Dois dígitos por linha, representa um poder do primeiro segundo coeficiente, indica a energia de todos os coeficientes são números inteiros. A primeira linha deve ser o mais alto poder, a última linha de alimentação deve ser 0.
Não é necessariamente dispostos em ordem de poder de atenção entre as primeira e última fileira diminuindo, se o poder de um coeficiente de 0, não está presente nos dados de entrada; 0 Coeficiente de potência ainda está presente na entrada 0 dados.
Formatos de saída:
Sequencialmente das maiores quedas de energia para potência zero, tais como:
2x6 + 3x5 + + 20 12x3-6x
Nota onde x é minúscula, x, e não há espaços entre todos os símbolos, se um coeficiente de potência de 0 não precisa ter essa entrada.
entrada de amostra:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
Exemplo de saída:
4x6 + 6x5 + 12x3 + 12x2 + 12x + 40
Prazo: 500ms Limite de memória: 32000kb
notas:
- Coeficiente é 1 ou -1, a potência não é 1, tal como x e -x
- Índice 1, 1 não é emitido como x
- Coeficiente é 0, a saída correspondente não é monomial
- Quando apenas um termo constante, somente o valor do termo constante de saída, que compreende 0
Um código:
import java.util.Scanner;
public class exercise{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int p = in.nextInt();//第一个多项式的最高幂
int c = in.nextInt();//第一个多项式最高幂的系数
int count = 0;
int maxP = p;
//保存第一个多项式的系数
int[] coefficients1 = new int[maxP+1];
while( p!=0 ) {
coefficients1[p] = c;
p = in.nextInt();
c = in.nextInt();
}
if( p==0 ) {
count++;
if(count==1) {
coefficients1[p] = c;
p = in.nextInt();//第二个多项式的最高幂
c = in.nextInt();//第二个多项式最高幂的系数
}
}
//保存第二个多项式的系数
if(p > maxP) {
maxP = p;
}
int[] coefficients2 = new int[maxP+1];
while( p!=0 ) {
coefficients2[p] = c;
p = in.nextInt();
c = in.nextInt();
}
if( p==0 ) {
count++;
if(count==2) {
coefficients2[p] = c;
}
}
//相同次幂系数相加
int[] sumOfCoefts = new int[maxP+1];
for(int i=0;i<sumOfCoefts.length;i++) {
sumOfCoefts[i] = coefficients1[i] + coefficients2[i];
}
//输出多项式
int num = 0;//已输出的单项式的个数
int j=sumOfCoefts.length-1;
for(;j>0;j--) {
int ce = sumOfCoefts[j];
if(ce!=0) {
num++;
if(num==1) {
if(ce>1 || ce<-1) {
System.out.print(ce);
}
else if(ce==-1) {
System.out.print("-");
}
System.out.print("x");
if(j!=1) {
System.out.print(j);
}
}
else {
if(ce>0) {
System.out.print("+");
if(ce>1) {
System.out.print(ce);
}
System.out.print("x");
}
else {
if(ce<-1) {
System.out.print(ce);
}
else {
System.out.print("-");
}
System.out.print("x");
}
if(j!=1) {
System.out.print(j);
}
}
}
}
//常数项
int c0 = sumOfCoefts[0];
if(num!=0 && c0>0) {
System.out.print("+");
}
System.out.print(c0);
}
}
Código II:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int p,c;
int count = 0;
int[] sumOfCoefts = new int[101];
while(count<2) {
p = in.nextInt();
c = in.nextInt();
sumOfCoefts[p] += c;
if(p==0) {
count++;
}
}
//输出多项式
int num = 0;//已输出的单项式的个数
int j=sumOfCoefts.length-1;
for(;j>0;j--) {
int ce = sumOfCoefts[j];
if(ce!=0) {
num++;
if(num==1) {
if(ce>1 || ce<-1) {
System.out.print(ce);
}
else if(ce==-1) {
System.out.print("-");
}
System.out.print("x");
if(j!=1) {
System.out.print(j);
}
}
else {
if(ce>0) {
System.out.print("+");
if(ce>1) {
System.out.print(ce);
}
System.out.print("x");
}
else {
if(ce<-1) {
System.out.print(ce);
}
else {
System.out.print("-");
}
System.out.print("x");
}
if(j!=1) {
System.out.print(j);
}
}
}
}
//常数项
int c0 = sumOfCoefts[0];
if(num!=0 && c0>0) {
System.out.print("+");
}
System.out.print(c0);
}
}