#include<stdio.h>
#include<string.h>
int prime[100];
void Prime()
{
int i,j;
memset(prime,0,sizeof(prime));
for(i = 2;i < 100;i++)
{
if(prime[i])
{
continue;
}
else
{
for(j = i*i;j < 100;j += i)
{
prime[j] = 1;
}
}
}
}
int main()
{
int n,maxn,minn,i;
char str[101];
Prime();
prime[0] = 1;
prime[1] = 1;
scanf("%d",&n);
int count[26];
while(n--)
{
scanf("%s",&str);
memset(count,0,sizeof(count));
for(i = 0;str[i] != '\0';i++)
{
count[str[i] - 'a']++;
}
for(i = 0;i < 26;i++)
{
if(count[i] != 0)
{
maxn = i;
minn = i;
}
}
for(i = 0;i < 26;i++)
{
if(count[i] == 0)
{
continue;
}
else
{
if(count[maxn] < count[i])
{
maxn = i;
}
if(count[minn] > count[i])
{
minn = i;
}
}
}
if(prime[count[maxn] - count[minn]])
{
printf("No Answer\n0\n");
}
else
{
printf("Lucky Word\n%d\n",count[maxn] - count[minn]);
}
}
return 0;
#include<string.h>
int prime[100];
void Prime()
{
int i,j;
memset(prime,0,sizeof(prime));
for(i = 2;i < 100;i++)
{
if(prime[i])
{
continue;
}
else
{
for(j = i*i;j < 100;j += i)
{
prime[j] = 1;
}
}
}
}
int main()
{
int n,maxn,minn,i;
char str[101];
Prime();
prime[0] = 1;
prime[1] = 1;
scanf("%d",&n);
int count[26];
while(n--)
{
scanf("%s",&str);
memset(count,0,sizeof(count));
for(i = 0;str[i] != '\0';i++)
{
count[str[i] - 'a']++;
}
for(i = 0;i < 26;i++)
{
if(count[i] != 0)
{
maxn = i;
minn = i;
}
}
for(i = 0;i < 26;i++)
{
if(count[i] == 0)
{
continue;
}
else
{
if(count[maxn] < count[i])
{
maxn = i;
}
if(count[minn] > count[i])
{
minn = i;
}
}
}
if(prime[count[maxn] - count[minn]])
{
printf("No Answer\n0\n");
}
else
{
printf("Lucky Word\n%d\n",count[maxn] - count[minn]);
}
}
return 0;
}
这个题我真真是浪费可好长时间啊,有特殊数据没有考虑,比如说aaaa这种类型的,还是要在打代码之前想好,这样才不易疏漏。比说说这个题,在寻找输入字符串里出现次数最多和最少的时候,就要考虑首先把次数为0 的pass掉,然后maxn 和minn的初始值问题问自己想好了。