题解 | #[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");
    }
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务