【1407】笨小猴

【问题描述】
       笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设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;
}

发布了49 篇原创文章 · 获赞 0 · 访问量 1035

猜你喜欢

转载自blog.csdn.net/developer_zhb/article/details/104948742