题目链接 PAT甲级多项式相乘
这个测试案例有时向上取整有时向下取整,有两个点就卡在那,请问大佬怎么改
两分代码都过不去,第二份在官网上能过去
错误的代码:
一:
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
BigDecimal []arr=new BigDecimal[1010];
BigDecimal []arr2=new BigDecimal[1010];
BigDecimal []res=new BigDecimal[2020];
for(int i=0;i<1010;i++){
arr[i]=BigDecimal.ZERO;
arr2[i]=BigDecimal.ZERO;
}
for(int i=0;i<2020;i++){
res[i]=BigDecimal.ZERO;
}
int n=input.nextInt();
for(int i=0;i<n;i++){
int N=input.nextInt();
BigDecimal a=input.nextBigDecimal();
arr[N]=arr[N].add(a);
}
int m=input.nextInt();
for(int i=0;i<m;i++){
int N=input.nextInt();
BigDecimal a=input.nextBigDecimal();
arr2[N]=arr2[N].add(a);
}
BigDecimal e=new BigDecimal("0");
for(int i=0;i<1010;i++){
for(int j=0;j<1010;j++){
{
//系数相乘指数相加
if (!arr[i].equals(e)&&!arr2[j].equals(e)) {
BigDecimal temp = arr[i].multiply(arr2[j]);
res[i + j] = res[i + j].add(temp);
}
}
}
}
int k=0;
for(int i=0;i<2020;i++){
if(!res[i].equals(e)){
k++;
}
}
System.out.print(k);
for(int i=2019;i>=0;i--){
if(!res[i].equals(e)){
BigDecimal result=res[i].setScale(1, RoundingMode.HALF_UP);
System.out.print(" "+i+" "+result);
}
}
}
}
二:
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double[] f1 = new double[1010];
double[] f2 = new double[1010];
double[] f3 = new double[2020];
int n = in.nextInt();
for(int i = 0; i<n; i++){
int index = in.nextInt();
f1[index] = in.nextDouble();
}
n = in.nextInt();
for(int i = 0; i<n; i++){
int index = in.nextInt();
f2[index] = in.nextDouble();
}
for(int i = 0; i<1010; i++){
if(f1[i]!=0.0){
for(int j = 0; j<1010; j++){
if(f2[j]!=0.0){
f3[i+j] += f1[i]*f2[j];
}
}
}
}
int cnt = 0;
for(int i = 2000; i>=0; i--){
if(f3[i]!=0.0)
cnt++;
}
System.out.print(cnt);
for(int i = 2000; i>=0; i--){
if(f3[i]!=0.0){
System.out.print(" "+i+" ");
System.out.printf("%.1f",f3[i]);
}
}
System.out.println();
}
}
提问于4天前
2422