2441: 【普及-】【P1125】笨小猴

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:76 解决:20

题目描述

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

这种方法的具体描述如下:假设 lns="http://www.w3.org/1998/Math/MathML">maxn 是单词中出现次数最多的字母的出现次数,lns="http://www.w3.org/1998/Math/MathML">minn 是单词中出现次数最少的字母的出现次数,如果 lns="http://www.w3.org/1998/Math/MathML">maxnminn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。

输入

一个单词,其中只可能出现小写字母,并且长度小于 lns="http://www.w3.org/1998/Math/MathML">100

输出

共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出 Lucky Word,否则输出 No Answer

第二行是一个整数,如果输入单词是 Lucky Word,输出 lns="http://www.w3.org/1998/Math/MathML">maxnminn 的值,否则输出 lns="http://www.w3.org/1998/Math/MathML">0

样例输入 复制

error

样例输出 复制

Lucky Word
2

提示

【输入输出样例 1 解释】

单词 error 中出现最多的字母 lns="http://www.w3.org/1998/Math/MathML">r 出现了 lns="http://www.w3.org/1998/Math/MathML">3 次,出现次数最少的字母出现了 lns="http://www.w3.org/1998/Math/MathML">1 次,lns="http://www.w3.org/1998/Math/MathML">31=2lns="http://www.w3.org/1998/Math/MathML">2 是质数。

【输入输出样例 2 解释】

单词 olympic 中出现最多的字母 lns="http://www.w3.org/1998/Math/MathML">i 出现了 lns="http://www.w3.org/1998/Math/MathML">1 次,出现次数最少的字母出现了 lns="http://www.w3.org/1998/Math/MathML">1 次,lns="http://www.w3.org/1998/Math/MathML">11=0lns="http://www.w3.org/1998/Math/MathML">0 不是质数。

(本处原题面错误已经修正)

noip2008 提高第一题


#include<bits/stdc++.h>
using namespace std;

int main(){
    char a[110];
    int ans[26]={0}; //ans[0]到ans[25]分别代表'a'到'z'出现的次数,注意要初始化 
    int l,mmax,mmin,delta; //字符长度,出现次数最多的字母出现次数和出现次数最少的字母出现次数,以及差值
	scanf("%s",a);
	l=strlen(a);
	for (int i=0;i<l;i++)
	    ans[a[i]-'a']++;  //统计增加某个字母的数量
	mmax=0;mmin=10000;  //最大最小值初始化
	for (int i=0;i<26;i++) {  //寻找每个字母的最大值和最小值 
		if (ans[i]>mmax)  //如果超过最大值 
		    mmax=ans[i];
		if (ans[i]!=0&&ans[i]<mmin) //如果小于最小值,但是不能为0 
		    mmin=ans[i];		    
	} 
	delta=mmax-mmin;
	if (delta==0||delta==1) {  //质数特判 
		printf("No Answer\n0\n");
		return 0;
	}
	for (int h=2;h*h<=delta;h++)  //枚举因数 
	    if (delta%h==0) {
	    	printf("No Answer\n0\n");  //直接输出答案并退出程序 
	    	return 0;
		}
	printf("Lucky Word\n%d\n",mmax-mmin);
	return 0;
}