//假设 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
最新推荐文章于 2024-02-03 20:31:14 发布
1633

被折叠的 条评论
为什么被折叠?



