题目描述
kkksc03 发明了一种猜答案的方式,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn
是单词中出现次数最多的字母的出现次数,minn
是单词中出现次数最少的字母的出现次数,如果maxn-minn
是一个质数,那么 kkksc03 就认为这是个Lucky Word
,这样的单词很可能就是正确的答案。
输入格式
一个单词,其中只可能出现小写字母,并且长度小于100100。
输出格式
共两行,第一行是一个字符串,假设输入的的单词是Lucky Word
,那么输出“Lucky Word
”,否则输出“No Answer
”;
第二行是一个整数,如果输入单词是Lucky Word
,输出maxn-minn
的值,否则输出00。
输入输出样例
输入 error
输出Lucky Word 2
输入 olympic
输出 No Answer 0
#include<bits/stdc++.h>
using namespace std;
int minn,maxn;
bool isprime(int num){
if(num ==2)
return true;
if(num%2==0 || num<2)
return false;
else{
for(int i=3;i*i<=num;i+=2){
if(num%i==0){
return false;
}
}
return true;
}
}
typedef struct{
string ch; // 次数最多的字母
int total; // 出现次数
}sum;
bool cmp1(sum a,sum b){
return a.total>b.total;
}
int main()
{
string str;
getline(cin,str);
int len=str.length();
sum s[100];
for(int i=0;i<len;i++)
{
int count=0;
for(int j=0;j<len;j++)
{
if(str[i]==str[j])
{
++count;
}
}
s[i].ch=str[i];
s[i].total=count;
}
sort(s,s+len,cmp1);
// cout<<s[1].total<<" "<<s[1].ch<<endl;
// cout<<s[len-1].total<<" "<<s[len-1].ch<<endl;
maxn = s[1].total;
minn = s[len-1].total;
if(isprime(maxn-minn)){
cout << "Lucky Word" << endl;
cout << maxn-minn << endl;
}
else{
cout << "No Answer" << endl;
cout << "0" << endl;
return 0;
}
}