大家好,好久不见,我去打比赛了,对不起,停更了。今天我找到了一道康了秒懂,不康有点懵的题。
怎么做?自己想。
题还是比较简单的,~~很~~容易康懂。一想就是定一个函数判断质数,可你要定26个变量存储字母的数量吗,不。
for(int i=0;i<len;i++)
sum[s[i]-'a']++;
这样既可轻松化解,又可以省,我的内存。
~~简单吧~~
哦,还要提一点,可以省去质数函数,因为最多要判断sqrt(maxn - minn),虽然是100以内,但不如直接用一个熟组进行枚举。
const 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};
懂了吗,懂了就做吧
没时间了,我要去了。
code
#include <bits/stdc++.h>
using namespace std;
char s[110];
const 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};
int sum[26];
int main(){
int maxn=0,minn=110;
cin>>s;
int len=strlen(s);
for(int i=0;i<len;i++)
sum[s[i]-'a']++;
for(int i=0;i<26;i++){
if(sum[i]>maxn)
maxn=sum[i];
if(sum[i]>0&&sum[i]<minn)
minn=sum[i];
}
for(int i=0;i<25;i++){
if(maxn-minn==prime[i]){
printf("Lucky Word\n%d",maxn-minn);
return 0;
}
}
printf("No Answer\n0");
return 0;
}
加油骚年!!