题解 | #[NOIP2008]笨小猴#
[NOIP2008]笨小猴
http://www.nowcoder.com/practice/17865bc2a75c4944a872ef709958c56e
因为备考考研的时候复习到了hash表,所以想到了用hash排队的方法,先给hash数组全赋值为0,而后利用hash[b[i]-'0']++这一步直接在对应出现的字母累加。
#include<stdio.h>
#include<string.h>
int iszhishu(int n){
int i;
for(i=2;i<n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main(){
int i,j,maxn=0,minn=100;
char b[100];
int hash[100]={0};//利用hash的方法在对应的
gets(b);
for(i=0;i<strlen(b);i++){
hash[b[i]-'0']++;
}
for(i=0;i<100;i++){
if(hash[i]>maxn){
maxn=hash[i];
}
if(hash[i]!=0&&hash[i]<minn){
minn=hash[i];
}
}
int tmp=maxn-minn;
if(iszhishu(tmp)&&tmp!=0&&tmp!=1){
printf("Lucky Word\n");
printf("%d",tmp);
}else{
printf("No Answer\n");
printf("0");
}
}