注意判断素数为0的情况
#include<bits/stdc++.h>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
char a[1000];
int prime[25]={2,3,5,7,11,13,17,
19,23,29,31,37,41,
43,47,53,59,61,67,
71,73,79,83,89,97};//素数
cin>>a;
int len=strlen(a);
sort(a,a+len); //将输入进来的数字排序
int k=0,sum[1000]={0};
for(int i=0;i<len;i++){
if(a[i]==a[i+1]){
sum[k]++; //排完序之后所有相同的字符都在一起了
}else{ //所以直接判断他和后面的字符是不是亲兄弟!如果是,将他们加1
sum[k++]++; //如果下一个不是亲兄弟,将这组最后一个好兄弟加进去,并且下标++
}
}
sort(sum,sum+k); //将获取到的数组做排序,sum[0]肯定是出现次数最少的也就是mmin
int i=24; //而数组的最后以为也就是出现字符最多的出现次数
while(i>=0){
if(prime[i--]==sum[k-1]-sum[0]){ //将最多的减去最少的 判断他们的差是不是素数
cout<<"Lucky Word"<<endl;
cout<<sum[k-1]-sum[0];
return 0;
}
}
cout<<"No Answer"<<endl;
cout<<0;
return 0;
}