【问题描述】
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
【输入格式】
只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
【输出格式】
共两行,第一行是一个字符串,假设输入的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。
【输入样例1】
error
【输出样例1】
Lucky Word
2
【输入样例2】
olympic
【输出样例2】
No Answer
0
【参考程序】
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
bool prime(int x) {
if (x < 2) {
return false;
} else {
for (int i=2; i<=sqrt(x); i++) {
if (x % i == 0) {
return false;
}
}
}
return true;
}
int main() {
int a[26], maxn=0, minn=1000;
string s;
memset(a, 0, sizeof(a)); // 初始化a数组置零
cin >> s;
for (int i=0; i<s.length(); i++) {
a[s[i]-'a'] += 1; // 统计字符串中各字母的出现次数
}
for (int i=0; i<26; i++) { // 查找字母出现的最多次数和最少次数
if (a[i] > maxn) {
maxn = a[i];
}
if (a[i]<minn && a[i]!=0) {
minn = a[i];
}
}
if (prime(maxn-minn)) { // 满足条件即为Lucky Word
cout << "Lucky Word" << endl << maxn-minn;
} else {
cout << "No Answer" << endl << 0;
}
return 0;
}