2019年全国高校程序设计挑战赛JAVA编程题4
2019年全国高校程序设计挑战赛JAVA编程题4
编程描述
由N ( N< = 10000 )个数字组成的数组,其中连续K ( K<=200 )个元素构成一个区间,称为K区间。一个K区间中所有素数的和记为Sk ,请计算整个数组中,所有K区间中的最大Sk值,并输出。
输入格式
第一行是两个整数N和K ,第二行输入N个数,表示数组中的元素。
输出格式
最大Sk值。
输入样例
1 2
| 8 2 12 23 27 34 19 17 45 8
|
输出样例
算法实现
Java(jdk1.7)
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import java.util.Scanner; public class Main { public static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int N = sc.nextInt(); int K = sc.nextInt(); int[] num = new int[N]; int Sk = 0; for (int i = 0; i < N; i++) { num[i] = sc.nextInt(); } sc.close(); for (int i = 0; i < N - K; i++) { int sumPrimes = 0; for (int j = 0; j < K; j++) { if (isPrimes(num[i + j])) { sumPrimes += num[i + j]; } } if (sumPrimes > Sk) { Sk = sumPrimes; } } System.out.println(Sk); } public static boolean isPrimes(int num) { for (int i = 2; i < num; i++) { if (num % i == 0) { return false; } } return true; } }
|