在编译器中将边界设为1001 然后提交的代码边界设为1000,结果产生了部分正确的结果,实在是不应该,浪费太多时间。其次是在验证期间,写了测试代码,用Math.random()*(你所需边界值+1)*2 -(边界值+1)这样所表示的随机数是一个正负范围。【-边界值,+边界值】。还是花太长时间了,速度有待提升,细节部分也要好好的看清楚。做题前,应该清楚的知道,自己到底要实现的部分有哪些。
//K为不为0 的项的个数。 1<=K<=10
//可以将数据存入两个数组,按照指数存入相应的位置,然后a[i] + b[i]就等于相同项的系数,之后在通过遍历查找数组中不为0的项数
import java.util.*;
public class Practoce1002 {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int k = 0;//不为0的项的个数
float[] a = new float[1001];//最大指数项为1000
float[] b = new float[1001]; //同上
String array_a = sc.nextLine();
String array_b = sc.nextLine();
String[] arrayA = array_a.split(" ");
String[] arrayB = array_b.split(" ");
//将字符数组转为浮点数组
for(int i = 1;i<arrayA.length;i+=2){
a[Integer.parseInt(arrayA[i])] = Float.parseFloat(arrayA[i+1]);
}
for(int i = 1;i<arrayB.length;i+=2){
b[Integer.parseInt(arrayB[i])] = Float.parseFloat(arrayB[i+1]);
}
for(int i = 0;i<b.length;i++){
String s = String.format("%.1f",a[i]+b[i]);//保留小数点后一位
b[i] = Float.parseFloat(s);
System.out.print(b[i] +" ");
if(b[i] !=0)「//若不为0 便加一
k++;
}
}
System.out.println();
StringBuilder s = new StringBuilder();
s.append(k).append(" ");
for(int i = b.length-1;i>=0 ;i--){
if( b[i] != 0 ){
s.append(i).append(" ").append(b[i]).append(" ");
}
}
String result = s.toString().trim();//头尾没有多余空格
System.out.println(result);
}
}
网友评论