//假设 max 是单词中出现次数最多的字母的出现次数minn是单词中出现次数最少的字母的出现次数,如果 maxn-minn 是一个质数, // 那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。 思路:讲字符串转换为字符串数组存入,然后每个字符串数组跟全部遍历计算个数存入新数组,在新数组中找到最大最值,再判断是否是素数。 判断素组的思路是:如果 n不能被 2 ~ √n间任一整数整除,n必定是素数。 import java.util.Scanner; public class Main { public static boolean Prime(int a, int b){ // 自定义一个方法判断是不是质数 if (a - b < 2) return false; // 利用Math.sqrt(double)将a-b强制转换为duoble型 for (int i = 2; i <= Math.sqrt((double) (a - b)); i ++){ if ((a - b) % i == 0){ return false; } } return true; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String word = sc.nextLine(); char arr1[] = word.toCharArray(); int arr2[] = new int[100]; int max = 0; int min = 100; //输入 //存入数组 for (int i = 0; i < arr1.length; i++) {//找出每个位置字母在整个字符串中相同字母的个数 int count = 0; for (int j = 0; j < arr1.length; j++) { if (arr1[j] == arr1[i]) { count++; } } arr2[i] = count; } for (int i = 0; i < arr1.length; i++) { // 根据比较大小来判断数组a中谁最大谁最小 if (max <= arr2[i]) { max = arr2[i]; } if (min >= arr2[i]) { min = arr2[i]; } } //遍历数组然后统计每个字母出现次 int shuzhi = max - min; if (Prime(max , min) == true){ System.out.println("Lucky Word"); System.out.println(shuzhi); } else { System.out.println("No Answer"); System.out.println("0"); } } }
P1125 [NOIP2008 提高组] 笨小猴 java
最新推荐文章于 2023-02-21 10:15:00 发布