[Grupo de mejora NOIP2008] Mono estúpido
Enlace al tema: https://www.luogu.com.cn/problem/P1125
Descripción del Título
El estúpido mono tiene un vocabulario reducido, así que cada vez que hace preguntas de opción múltiple en inglés, le duele la cabeza. Pero encontró una manera, y el experimento demostró que cuando se usa este método para elegir la opción, ¡la posibilidad de elegir la opción correcta es muy alta!
La descripción específica de este método es la siguiente: suponga que maxn es el número de ocurrencias de la letra con más ocurrencias en una palabra, minn es el número de ocurrencias de la letra con menos ocurrencias en la palabra, si maxn-minn es un número primo, entonces el estúpido mono piensa que esto es una palabra de la suerte, y tal palabra es probablemente la respuesta correcta.
Formato de entrada
Una palabra en la que solo pueden aparecer letras minúsculas y la longitud es inferior a 100.
Formato de salida
Hay dos líneas. La primera línea es una cadena. Si la palabra de entrada es Lucky Word, entonces envíe "Lucky Word", de lo contrario, muestre "Sin respuesta";
La segunda línea es un número entero. Si la palabra de entrada es Lucky Word, genera el valor de maxn-minn, de lo contrario, genera 0.
Entrada y salida de muestra
Ingrese # 1
error
Salida # 1
Palabra de suerte
2
Entrada n. ° 2
olímpico
Salida # 2
Sin respuesta
0
Instrucciones / consejos
[Explicación del ejemplo de entrada y salida 1]
La letra r con más ocurrencias en la palabra error aparece 3 veces y la letra con menos ocurrencias aparece una vez, 3−1 = 2, y 2 es un número primo.
[Explicación de la muestra de entrada y salida 2]
La letra i con más ocurrencias en la palabra olympic aparece una vez y la letra con menos ocurrencias aparece una vez, 1−1 = 0, 0 no es un número primo.
Ideas de resolución de problemas:
Enumere 26 letras de la a a la z, determine si la letra ha aparecido, compare el número de veces que ha aparecido cada letra y encuentre el máximo y el mínimo.
el código se muestra a continuación:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int max = -1, min = 99999;
int[] a = new int[105];
for (int i = 0; i < s.length(); i++) {
a[s.charAt(i) - 'a']++;
}
for (int i = 0; i < 26; i++) {
if (max < a[i])
max = a[i];
if (min > a[i] && a[i] != 0)
min = a[i];
}
int t = max - min;
boolean bl = true;
for (int i = 2; i < t; i++) {
if (t % i == 0) {
bl = false;
break;
}
}
if (bl && t >= 2) {
System.out.println("Lucky Word");
System.out.println(t);
} else {
System.out.println("No Answer");
System.out.println(0);
}
}
}