#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string s;
int a[30],mina=1000,maxa=-1;
bool isPrime(int x)
{
if(x<=1)return false;
if(x==2 || x==3)return true;
if(x%6!=1 && x%6!=5)return false;
for(int i=5;i*i<=x;i+=6)if(x%i==0 || x%(i+2)==0)return false;
}
int main()
{
cin>>s;
for(int i=0;i<s.size();++i)a[s[i]-'a']++;
for(int i=0;i<26;++i)
{
if(a[i]>0 && mina>a[i])mina=a[i];
if(maxa<a[i])maxa=a[i];
}
if(isPrime(maxa-mina))printf("Lucky Word\n%d",maxa-mina);
else printf("No Answer\n0");
return 0;
}
这份代码可以通过P1125
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string s;
int a[30],mina=1000,maxa=-1;
bool isPrime(int x)
{
if(x<=1)return false;
if(x==2 || x==3)return true;
if(x%6!=1 && x%6!=5)return false;
for(int i=5;i*i<=x;i+=6)if(x%i==0 || x%(i+2)==0)return false;
}
int main()
{
cin>>s;
for(int i=0;i<s.size();++i)a[s[i]-'a']++;
for(int i=0;i<26;++i)
{
if(a[i]>0 && mina>a[i])mina=a[i];
if(maxa<a[i])maxa=a[i];
}
if(isPrime(maxa-mina)==true)printf("Lucky Word\n%d",maxa-mina);
else printf("No Answer\n0");
return 0;
}
但这份会WA #3
不同的地方:
if(isPrime(maxa-mina))printf("Lucky Word\n%d",maxa-mina);
if(isPrime(maxa-mina)==true)printf("Lucky Word\n%d",maxa-mina);
想知道这两处有什么区别