蓝桥杯官网题库【简单题解析】持续更新

单词分析

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

  • 题目描述
    小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
    现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
  • 输入描述
    输入一行包含一个单词,单词只由小写英文字母组成。
    对于所有的评测用例,输入的单词长度不超过 1000。
  • 输出描述
    输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
    第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
  • 输入输出样例
示例 1
输入
lanqiao
输出
a
2

示例 2
输入
longlonglongistoolong
输出
o
6

题目分析: 用hash定址法。即,数组下标来对应的统计个数

#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;
}

笨小孩

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

  • 题目描述
    笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
    这种方法的具体描述如下:假设 maxnmaxn 是单词中出现次数最多的字母的出现次数,minnminn 是单词中出现次数最少的字母的出现次数,如果 maxn-minnmaxn−minn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。
  • 输入描述
    输入一行,是一个单词,其中只可能出现小写字母,并且长度小于 100。
  • 输出描述
    输出两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出Lucky Word,否则输出No Answer;
    第二行是一个整数,如果输入单词是 Lucky Word,输出 maxn-minnmaxn−minn 的值,否则输出 0。
  • 输入输出样例
示例 1
输入
error
copy
输出
Lucky Word
2

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

本题解析:
1.统计各个字符的个数(用hash定址法 ,即数组下标来统计)
2.找到最多次数的和最少次数的
3.质数判断

#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;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/114777403
今日推荐