Banco de preguntas del sitio web oficial de Blue Bridge Cup [Análisis de preguntas simples] Se actualiza continuamente

Análisis de palabras

https://www.lanqiao.cn/problems/504/learning/

  • Descripción del título
    Xiaolan está aprendiendo un idioma mágico. Las palabras en este idioma se componen de letras minúsculas en inglés. Algunas palabras son muy largas, y superan con creces la longitud de las palabras normales en inglés. Xiaolan había estado aprendiendo durante mucho tiempo y no podía recordar algunas palabras. Planeaba no recordar estas palabras por completo, sino distinguir las palabras según la letra que apareciera más.
    Ahora, por favor ayude a Xiaolan. Después de dar una palabra, ayúdelo a encontrar la letra más frecuente y el número de veces que aparece esta letra.
  • Descripción de
    entrada La línea de entrada contiene una palabra y la palabra solo consta de letras minúsculas en inglés.
    Para todos los casos de evaluación, la longitud de la palabra de entrada no debe exceder 1000.
  • Descripción de
    salida Salida de dos líneas La primera línea contiene una letra en inglés, que indica qué letra aparece con más frecuencia en una palabra. Si hay varias letras que aparecen el mismo número de veces, se emite la que tiene el orden lexicográfico más pequeño.
    La segunda línea contiene un número entero que representa el número de veces que aparece la letra más frecuente en la palabra.
  • Entrada y salida de muestra
示例 1
输入
lanqiao
输出
a
2

示例 2
输入
longlonglongistoolong
输出
o
6

Análisis de problemas: utilice el método de direccionamiento hash. Es decir, el número de estadísticas correspondientes al subíndice de la matriz

#include <iostream>
# include <bits/stdc++.h>
using namespace std;
int c[26];
int main()
{
    
    
  string a;
  cin>>a;int max=0;
  int i;int b=97;char x;
  for(i=0;i<a.length();++i)
  {
    
    
    ++c[a[i]-97];
  }
  for(i=0;i<26;++i)
  {
    
    
    if(c[i]>max){
    
    
      max=c[i];
      x=i+97;
    }
  }
  cout<<x<<endl<<max<<endl;
  return 0;
}

Niño estupido

https://www.lanqiao.cn/problems/527/learning/

  • Descripción del título El
    estúpido mono tiene un vocabulario muy pequeño, por lo 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 maxnmaxn es el número de apariciones de la letra con más apariciones en una palabra, minnminn es el número de apariciones de la letra con la menor cantidad de apariciones en la palabra, si maxn-minnmaxn− minn es un número primo, entonces el mono tonto es Creo que esta es una palabra de la suerte, tal palabra es probablemente la respuesta correcta.
  • Ingrese la descripción
    Ingrese una línea, que es una palabra, en la que solo pueden aparecer letras minúsculas y la longitud es menor a 100.
  • Descripción de
    salida Genere dos líneas, la primera línea es una cadena, si la palabra de entrada es Lucky Word, luego genere Lucky Word, de lo contrario, genere Sin respuesta; la
    segunda línea es un número entero, si la palabra de entrada es Lucky Word, salida maxn- The valor de minnmaxn − minn, de lo contrario se emite 0.
  • Entrada y salida de muestra
示例 1
输入
error
copy
输出
Lucky Word
2

示例 2
输入
Olympic
copy
输出
No Answer
0

Análisis de esta pregunta:
1. Cuente el número de cada carácter (usando el método de direccionamiento hash, es decir, el subíndice de matriz para contar)
2. Encuentre el más frecuente y el menos frecuente
3. Juicio de números primos

#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
char str[105];
int a[27]={
    
    0};
int main()
{
    
    
  // 请在此输入您的代码
  gets(str);
  int max=-1;
  int min=1000;
  int number=0;
  int i,j;
  int flag=0;
  for(i=0;i<strlen(str);i++)
  {
    
    
      if(str[i]>='a')
      {
    
    
         a[str[i]-'a']++;
      }
  }
  for(i=0;i<26;i++)
  {
    
    
     if(a[i]>max)
      max=a[i];
    if(a[i]<min&&a[i]>0)
      min=a[i];
  }
  number=max-min;
  for(i=2;i<sqrt(number);i++)
  {
    
    
      if(number%i==0)//不是质数
      {
    
    
        flag=1;//用来标志不是质数
        break;
      }
  }
  if(number==0||number==1)//排除一些特殊的情况
  {
    
    
    printf("No Answer\n0");
    return 0;
  }
  if(!flag)
  {
    
    
      printf("Lucky Word\n");
  }
  else
  {
    
    
     printf("No Answer\n0");
     return 0;
  }
  printf("%d\n",number);
  return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_46527915/article/details/114777403
Recomendado
Clasificación