思路:
1、先开一个数组,存这个单词每个字母的出现次数
2、找出最大值,做差
3、看差值是否位质数
AC代码:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 200;//因为z的ACSII码是144所以空间开大一些留着存字母一共出现几次
int cnt[N];
int main()
{
cin.tie(0)->ios::sync_with_stdio(false); //快读
string str;
cin >> str;
int maxn = 0,minn = 1e9; //分别取临界值
for(int i=0;i<str.size();i++)
{
cnt[str[i]]++; //求一下该字母出现的次数
}
//找出最值
for(int i=0;i<str.size();i++)
{
maxn = max(maxn,cnt[str[i]]);
minn = min(minn,cnt[str[i]]);
}
//做差找质数
int ans = maxn - minn;
bool flag = true;
for(int i=2;i*i<=ans;i++)
{
if(ans % i == 0)
{
flag = false;
break;
}
}
if(flag && ans!=1 && ans!=0)
{
cout << "Lucky Word" << endl << ans;
}
else cout << "No Answer" << endl << 0;
return 0;
}