zoukankan      html  css  js  c++  java
  • NOIP2008复赛 提高组 第一题

    描述

    笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

    这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

    输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
    第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。样例输入

    样例 #1:
    error
    
    样例 #2:
    olympic

    样例输出

    样例 #1:
    Lucky Word
    2
    
    样例 #2:
    No Answer
    0
    分析:
    这道题的考点:
    1.素数的筛法打表.
    2.字符串的运用.
    代码:
    #include <iostream>
    #include <string>
    #include <math.h> 
    #include <bits/stdc++.h>
    using namespace std;
    void prime(bool q[], int n){
        memset(q,true,n);
        q[0]=false;
        q[1]=false;
        for(int i=2;i<=sqrt(n);i++){
            for(int j=i*i;j<=n;j+=i){
                if(q[j]==false) continue;
                q[j]=false;
            }
        }
    }
    
    bool m[101];
    int main(){
        prime(m,101);
        string a;
        getline(cin,a);
        int len;
        len=a.size();
        int acc[26]={0};
        char s[len];
        int max=0,min=100;
        for(int i=0;i<len;i++){        
            s[i]=a[i];
            acc[int(s[i])-97]++;
        }
        for(int i=0;i<26;i++){
            if(acc[i]>max) max=acc[i];
        }
        for(int i=0;i<26;i++){
            if(acc[i]<min&&acc[i]!=0) min=acc[i];
        }
        if(m[max-min]==true) cout<<"Lucky Word"<<endl<<max-min<<endl;
        else cout<<"No Answer"<<endl<<0<<endl;
        return 0;
    }
     
  • 相关阅读:
    第二十章 用户管理(一)
    第十九章 Linux中常用字符的特殊含义
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/tushukai/p/7604393.html
Copyright © 2011-2022 走看看