#include
#include
#include
using namespace std;
bool prime(int x);
int main()
{
string hyper;
int a[26]={0};
int maxn=0,minn=9999;
cin>>hyper;
for(int i=0;ilength();i++)
a[hyper[i]-'a']+=1;
for(int i=0;i<26;i++)
{
if(maxif(min>a[i]&&a[i]!=0)
min=a[i];
}
if(prime(maxn-minn))
cout<<"Lucky Word"<else
cout<<"No Answer"<0<return 0;
}
bool prime(int x)
{
if(x<2)
return false;
else
{
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return false;
}
}
return true;
}
【截图1】
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int fun(const void *a,const void *b)//大到小排序
{
return *(int*)b-*(int*)a;
}
int prime(int x) //是合数返回0,不是返回1
{
int i,l;
if(x==||x==) return ;
else
{
l=sqrt(x);
for(i=;i<=l;i++)
if(x%i==) return ;
return ;
}
}
int main()
{
char a[];
int i,j=;//循环
int b[];//存储每个字母出现的次数
int c[];//备份
int maxn,minn;//最大最小
for(i=;i<;i++)
{
b[i]=;//初始化、清零
}
//freopen("word.in","r",stdin);
//freopen("word.out","w",stdout);
gets(a);
for(i=;i<strlen(a);i++)//统计每个字母出现的次数
{
b[a[i]-]++;
}
for(i=;i<;i++)
{
if(b[i]!=)//不是0,存入c数组
{
c[j]=b[i];
j++;
}
}
qsort(c,j,sizeof(int),fun);
j--;
maxn=c[];
minn=c[j];
if(prime(maxn-minn)==) printf("Lucky Word\n%d\n",maxn-minn);
else if(prime(maxn-minn)==)printf("No Answer\n%d\n",);
return ;
}
你定义的是minn
int maxn=0,minn=9999;
第20行,你用的是min,少一个n
if(min>a[i]&&a[i]!=0)