NOIP2008 提高组 复赛 word 笨小猴

NOIP2008 提高组 复赛 word 笨小猴

1.看完题目,是字符串操作。

2.做一个字母到整数的映射,a-0,b-1,c-2,......

3.开一个26个元素的整型数组,统计字母个数,完毕后,一次遍历,找出最大值,最小值。

4.最多次数-最小次数,对结果判定是否质数。

5.判定素数时,分三种情况讨论,0,1;2;3,4,5.....

6.代码在经历i<26时,写成了i<len,调试了3分钟。

7.样例通过后,提交AC

耗时:30分钟

难度:简单

附上AC代码,编译环境Dev-C++4.9.9.2

//2008 word 笨小猴
#include <stdio.h>
#include <string.h>
char s[100+10];
int a[26];
int main(){
    int len;
    int i,j;
    int min,max;
    int t;
    memset(a,0,sizeof(a));
    scanf("%s",s);
    len=strlen(s);
    for(i=0;i<len;i++){
        a[s[i]-'a']++;
    }
    min=999;
    max=-1;
    for(i=0;i<26;i++){//找出最小值,最大值 ,此处len,应改成26 ,查了会
        if(a[i]>0){
            if(min>a[i])
                min=a[i];
            if(max<a[i])
                max=a[i];
        }
    }
    if(min!=999&&max!=-1){//判段是否质数
        t=max-min;
        if(t<2){
            printf("No Answer\n");
            printf("0\n");
        }else if(t==2){
            printf("Lucky Word\n");
            printf("2\n");
        }else{//t>2
            for(i=2;i<t;i++)
                if(t%i==0){//非质数
                    break;
                }
            if(i==t){//质数
                printf("Lucky Word\n");
                printf("%d\n",t);
            }else{//非质数
                printf("No Answer\n");
                printf("0\n");
            }
        }
    }else{
        printf("No Answer\n");
        printf("0\n");
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值