4.由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间。一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出。
输入说明:第一行是两个整数N和K,第二行输入N个数,表示数组中的元素。
输出说明:最大Sk值
输入样例:8 2
12 23 27 34 19 17 45 8
输出样例:36
public static void main(String [] s){ Scanner input=new Scanner(System.in); int N= input.nextInt(); int k=input.nextInt(); int [] array=new int[N]; for(int i=0;i<N;i++) array[i]=input.nextInt(); int maxSum=0; for(int i=0;i<=N-k;i++) { int sum=0; for(int j=0;j<k;j++) { if(IStarget(array[i+j])) sum+=array[i+j]; } maxSum=Math.max(sum,maxSum); } System.out.println(maxSum); }
public static boolean IStarget(int num) { for(int i=2;i<num/2;i++) if(num%i==0) return false; return true; }
5.仓库新进了几批物资,只知道每批物资的数量和单价,请编写程序,按照每种物资的总价值,由高到低次序输出。
输入说明:第1行 一个整数N,表明物资的批次数量
第2-N+1行,每批物资的类别、数量及单价,中间用空格隔开,其中类别用A-Z加以区分。
输出说明:按物资价值降序输出排序结果,每行输出一种物资。
输入样例:5
A 5 10.00
B 3 2.00
A 5 8.00
B 3 2.50
C 10 3.50
输出样例:A 90.00
C 35.00
B 13.50
public static void main(String [] s){ Scanner input=new Scanner(System.in); int x=input.nextInt(); Map<Character,Double> hs=new HashMap<>(); for(int i=0;i<x;i++) { char index=input.next().charAt(0); hs.put(index,hs.getOrDefault(index,0.0)+ input.nextInt()*input.nextDouble()); } while(!hs.isEmpty()) { double money=0; char index=‘a‘; for(char key:hs.keySet()) { if(hs.get(key)>money) { index=key; money=hs.get(key); } } System.out.println(index+" "+hs.get(index)); hs.remove(index); } }