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); } }