桶方法:
#include <bits/stdc++.h>
using namespace std;
char a[9999];
int b[9999];
int c[999999];
int f (int x) //素数。
{
if(x==1)
return false;
for (int i = 2; i <= sqrt(x); i++)
{
if (x % i == 0)
return false;
}
return x;
}
int main () {
cin >> a;
int la, max = 0, min = 9999;
la = strlen(a);
for (int i = 0; i < la; i++)//转化数字。
{
b[i] = a[i] - '0';
}
sort(a, a + la);//sort排序。
for (int i = 0; i < la; i++) //桶方法记录。
{
c[a[i]]++;
}
for (int j = 0; j < 999999; j++) //对比。
{
if (c[j] > 0)
{
if (c[j] > max)
max = c[j];
if (c[j] < min)
min = c[j];
}
}
if (f(max - min) != 0)
{
cout << "Lucky Word" << endl;
cout << max - min << endl;
}
else
{
cout << "No Answer" << endl;
cout << "0" << endl;
}
return 0;
}
map容器:
#include <iostream>
#include <map>
#include <cmath>
using namespace std;
bool check(int x) {
if (x == 0 || x == 1)
return false;
for (int i = 2; i <= sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
int main() {
map<char, int>m;
string a;
cin >> a;
int maxs = 0;
int mins = 1000;
for (int i = 0; i < a.length(); i++) {
m[a[i]]++;//这里的a[i]是char型,所以就跟我们上面例子一样.
}
for (int i = 0; i < a.length(); i++) {
maxs = max(maxs, m[a[i]]);
mins = min(mins, m[a[i]]);
}
if (check(maxs - mins)) {
cout << "Lucky Word" << endl;
cout << maxs - mins << endl;
} else {
cout << "No Answer" << endl;
cout << "0" << endl;
}
return 0;
}