最近一直在刷一些历
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
输入格式 一个单词,其中只可能出现小写字母.
输出格式 共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
输入文件:word.in
输出文件:word.out
思路如下:
先循环遍历字符数组
求出maxn和minn;
再求出maxn-minn的值;
最后判断是否是质数
话不多说,直接上代码:
#include<bits/stdc++.h>
using namespace std;
char a[105];
bool IsPrime(int p,int mod){
if(p == 1 && p == 0){
return false;
} else if(p == 2){
return true;
}
if(mod == 2) {
return (p % 2 != 0);
}
if(p % mod == 0) {
return false;
}
return IsPrime(p,mod-1);
}
int cdx = -1;
int maxn(char *a){
int now = 0;
for(int i = 'a'; i < 'z'; i++){
for(int j = 0; j < strlen(a); j++){
if(i == a[j]){
now++;
}
}
if(now > cdx){
cdx = now;
}
now = 0;
}
return cdx;
}
int cdn = 100;
int minn(char *a){
int now = 0;
for(int i = 'a'; i < 'z'; i++){
for(int j = 0; j < strlen(a); j++){
if(i == a[j]){
now++;
}
}
if(now < cdn && now != 0){
cdn = now;
}
now = 0;
}
return cdn;
}
int main(){
int i = 0;
cin>>a;
int x = maxn(a) - minn(a);
if(IsPrime(x,x/2)){
cout<<"Lucky Word";
} else {
cout<<"No Answer";
}
return 0;
}
以上便是这篇文章的全内容,感谢收看,欢迎点赞!
ps:如果有优化算法,欢迎私信!