题解 - 【NOIP2008】笨小猴
题面简述
给你一个字符串,让你求出最多出现的字母出现次数和最少的字母的出现次数,并且得到他们的差,在判断是否是质数。
思路
首先,求众数(注意此时需要判断最小值是否为 \(0\) ) 然后在判断质数即可。
判定质数模板:
if (n < 2) {
/* 不是质数 */
}
if (n == 2) {
/* 是质数 */
}
for (int i = 3; i <= sqrt(n); ++i) {
if (n % i == 0) {
/* 不是质数 */
}
}
/* 是质数 */
完整代码:
#include <bits/stdc++.h>
using namespace std;
int cnt[27];
int main() {
std::string str;
cin >> str;
for (int i = 0; i < str.length(); ++i) {
cnt[str[i] - 'a']++;
}
int max, min;
max = -0x3f3f3f3f;
min = 0x3f3f3f3f;
for (int i = 0; i < 26; ++i) {
if (cnt[i] > max) {
max = cnt[i];
}
if (cnt[i] < min && cnt[i] >= 1) {
min = cnt[i];
}
}
int av = max - min;
if (av < 2) {
cout << "No Answer" << endl << '0' << endl;
exit(0);
}
if (av == 2) {
cout << "Lucky Word" << endl << av << endl;
exit(0);
}
for (int i = 3; i <= sqrt(av); ++i) {
if (av % i == 0) {
cout << "No Answer" << endl << '0' << endl;
exit(0);
}
}
cout << "Lucky Word" << endl << av << endl;
}
Copyright littlefrog(2019)
所有权利保留。