zoukankan      html  css  js  c++  java
  • 洛谷-笨小猴-NOIP2008提高组复赛

    题目描述 Description

    笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
    这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
     输入输出格式 Input/output
    输入格式:
    输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
    输出格式:
    输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
    第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。
     输入输出样例 Sample input/output
    样例测试点#1

    输入样例:

    [input1]
    error
    [input2]
    olympic

    输出样例:

    [output1]
    Lucky Word
    2
    [output2]
    No Answer
    0

    说明 description

    【输入输出样例1解释】
    单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
    【输入输出样例2解释】
    单词olympic中出现最多的字母i出现了1次,出现次数最少的字母出现了1次,1-1=0,0不是质数。
    思路:这题十分简单,输入到一个字符串里,统计每个字母出现的次数,排序,再用最大的和最小的相减传入判断质数函数就得了
    返回的如果是质数就输出(注意:要特别判断0和1的情况
     
    代码如下:
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 #include <math.h>
     5 int fun(const void *a,const void *b)//大到小排序 
     6 {
     7    return *(int*)b-*(int*)a;
     8 }       
     9 int prime(int x) //是合数返回0,不是返回1    
    10 {    
    11     int i,l;
    12     if(x==0||x==1) return 0;
    13     else 
    14     {
    15         l=sqrt(x);
    16         for(i=2;i<=l;i++)    
    17             if(x%i==0) return 0;                
    18                 return 1;    
    19     }            
    20 }
    21 int main()
    22 {
    23     char a[999999];
    24     int i,j=0;//循环 
    25     int b[60];//存储每个字母出现的次数
    26     int c[27];//备份 
    27     int maxn,minn;//最大最小 
    28     for(i=0;i<26;i++)
    29     {
    30         b[i]=0;//初始化、清零 
    31     }
    32     //freopen("word.in","r",stdin);
    33     //freopen("word.out","w",stdout);
    34     gets(a);
    35     for(i=0;i<strlen(a);i++)//统计每个字母出现的次数 
    36     {
    37         b[a[i]-97]++;
    38     }
    39     for(i=0;i<26;i++)
    40     {
    41         if(b[i]!=0)//不是0,存入c数组 
    42         {
    43             c[j]=b[i];
    44             j++;
    45         }
    46     }
    47     qsort(c,j,sizeof(int),fun);
    48     j--;
    49     maxn=c[0];
    50     minn=c[j];
    51     if(prime(maxn-minn)==1) printf("Lucky Word
    %d
    ",maxn-minn);
    52     else if(prime(maxn-minn)==0)printf("No Answer
    %d
    ",0);
    53     return 0;
    54 }
     
  • 相关阅读:
    9th week
    8th Week 2
    8th Week 1
    课后作业-阅读任务-阅读提问-4
    2017-11-30-构建之法:现代软件工程-阅读笔记
    《团队-OldNote-项目总结》
    个人编程作业2-课程总结
    《团队-Oldnote-最终程序》
    课后作业-阅读任务-阅读提问-3
    《20171102-构建之法:现代软件工程-阅读笔记》
  • 原文地址:https://www.cnblogs.com/geek-007/p/4666525.html
Copyright © 2011-2022 走看看