本来挺简单的一题
结果想多了……
出了一些偏差
#include<stdio.h>
#include<math.h>
int main() {
int T;
scanf("%d",&T);
getchar();
while(T--) {
int a[26]= {0};
char c;
while(c=getchar()) {
if(c<'a'||c>'z')
break;
else {
++a[c-'a'];
}
}
int max=0,min=120;
for(int i=0; i<26; i++) {
if(!a[i])
continue;
else {
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
}
}
int i,m=max-min;
if(m<2)
i=0;
else {
for(i=2; i<=sqrt(m); i++)
if(m%2==0)
break;
}
if(i<=sqrt(m))
printf("No Answer
0
");
else
printf("Lucky Word
%d
",m);
}
return 0;
}
还是感觉标程写的好乱
自己写了一个寻找除0之外的最小值的函数
#include<iostream>
#include<string>
#include<algorithm>
#include<numeric>
using namespace std;
bool isPrime(int n) {
if(n==0) return false;
if(n==1) return false;
if(n==2) return true;
for(int i=2; i*i<=n; i++) {
if(n%i==0) return false;
}
return true;
}
int min_e(int *p,int *q) {
int m=1000;
for(int* i=p; i!=q; i++) {
if(*i<m && *i!=0) m=*i;
}
return m;
}
int main() {
int n;
string str;
cin>>n;
while(n--) {
int count[26]= {0};
cin>>str;
for(int i=0; i!=str.size(); ++i) {
++count[str[i]-'a'];
}
int nn=*max_element(count,count+26)-min_e(count,count+26);
if(isPrime(nn)) cout<<"Lucky Word"<<endl<<nn<<endl;
else cout<<"No Answer"<<endl<<0<<endl;
}
}
题目地址:【NYOJ】[62]笨小熊