"某游戏公司设计了一个奖励活动,给N个用户(1≤N≤10^7)连续编号为1到N,依据用户的编号S发放奖励。
发放奖励规则为:
公司随机设定三个非零正整数x,y,z。
如果S同时是x、y的倍数,奖励2张卡片;
如果S同时是y、z的倍数,奖励4张卡片;
如果S同时是x、z的倍数,奖励8张卡片;
如果S同时是x,y,z的倍数奖励10张卡片;
其他奖励1张卡片;
以上奖励不能同时享受。满足多个奖励条件时,以最高奖励为准。
求任意连续的L个用户,使得这L个用户得到的奖励总和最多,输出奖励总和的值。
输入说明:第一行,输入N,L,以空格隔开;(1≤L≤N≤10^7)
第二行,输入x,y,z,以空格隔开;(1≤x,y,z≤L)
输出说明:符合条件的连续L个用户的奖励总和的最大值。
输入样例:40 7
3 5 2
输出样例:24"
注释代码过多可以自行删除
package _2021Ti;import javax.persistence.criteria.CriteriaBuilder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;public class Test4 {public static void main(String[] args) {List<Integer> scoreList = new ArrayList<>();Scanner sc = new Scanner(System.in);// 即代表N个用户 也代表 编号的结束 , 和LString N_L = sc.nextLine();String[] s1 = N_L.split(" ");// x , y , zString xyz = sc.nextLine();String[] s2 = xyz.split(" ");//例如 N = 20 七个用户 编号就是 1-20// 假设 设定 3 5 2// 奖励根据 用户编号是否为 xyz 的倍数//倍数就是 对几倍求余 % ==0//假设L = 7 就是输出任意连续七个用户// 这七个用户奖励和是最多的// 输出奖励和总是// int jiangLihe = 0;// for (int i = 1 ; i <= Integer.valueOf(s1[0]) ; i++){
// //找出最牛的一组编号 都是给 10张牌的
// if (i % Integer.valueOf(s2[0]) == 0 && i % Integer.valueOf(s2[1]) == 0 && i % Integer.valueOf(s2[2]) == 0 ){
// List<Integer> firstList = new ArrayList<>();
// firstList.add(i);
// }
// //找出第二牛的 给8个牌 x 和 z 倍数
// if (i % Integer.valueOf(s2[0]) == 0 && i % Integer.valueOf(s2[2]) == 0 ){
// List<Integer> secondList = new ArrayList<>();
// secondList.add(i);
// }
// // 第三 y z 给 4 牌
// if (i % Integer.valueOf(s2[1]) == 0 && i % Integer.valueOf(s2[2]) == 0){
// List<Integer> thirdList = new ArrayList<>();
// thirdList.add(i);
// }
//
// // 第四大 x y 的倍数
// if (i % Integer.valueOf(s2[0]) == 0 && i % Integer.valueOf(s2[1]) == 0){
// List<Integer> fourthList = new ArrayList<>();
// fourthList.add(i);
// }
// }// 想循环遍历 因为是连续的L个用户//外层循环为判断总循环次数 假设药连续的L =3个用户 123 234 345 456 就会有这几种// 假设输入 40 用户 7 个一组// 33 40 - 7 = 33for (int j = 1; j <= Integer.parseInt(s1[0]) - (Integer.parseInt(s1[1]) -1) ; j++) {//总分int score = 0;// 控制次数int i=1;// 控制开始数字int s = j;//这层想 输出循环编号// 7while( i <= Integer.parseInt(s1[1])){// System.out.print(s);if (s % Integer.valueOf(s2[0]) == 0 && s % Integer.valueOf(s2[1]) == 0 && s % Integer.valueOf(s2[2]) == 0 ) {score += 10;} else if (s % Integer.valueOf(s2[0]) == 0 && s % Integer.valueOf(s2[2]) == 0 ){score += 8;}else if (s % Integer.valueOf(s2[1]) == 0 && s % Integer.valueOf(s2[2]) == 0){score += 4;}else if (s % Integer.valueOf(s2[0]) == 0 && s % Integer.valueOf(s2[1]) == 0){score +=2;}else {score += 1 ;}s++;i++;}scoreList.add(score);// System.out.println();}Collections.sort(scoreList);System.out.println(scoreList.get(scoreList.size() -1));}
}