noip2008 笨小猴


 P1125 笨小猴

    • 1.6K通過
    • 3.7K提交
  • 題目提供者該用戶不存在
  • 標簽模擬2008NOIp提高組
  • 難度普及-

提交該題 討論 題解 記錄

 

題目描述

笨小猴的詞匯量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的幾率非常大!

這種方法的具體描述如下:假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn-minn是一個質數,那么笨小猴就認為這是個Lucky Word,這樣的單詞很可能就是正確的答案。

輸入輸出格式

輸入格式:

 

輸入文件word.in只有一行,是一個單詞,其中只可能出現小寫字母,並且長度小於100。

 

輸出格式:

 

輸出文件word.out共兩行,第一行是一個字符串,假設輸入的的單詞是Lucky Word,那么輸出“Lucky Word”,否則輸出“No Answer”;

第二行是一個整數,如果輸入單詞是Lucky Word,輸出maxn-minn的值,否則輸出0。

 

輸入輸出樣例

輸入樣例#1:
[input1]
error
[input2]
olympic
輸出樣例#1:
[output1]
Lucky Word
2
[output2]
No Answer
0

說明

【輸入輸出樣例1解釋】

單詞error中出現最多的字母r出現了3次,出現次數最少的字母出現了1次,3-1=2,2是質數。

【輸入輸出樣例2解釋】

單詞olympic中出現最多的字母i出現了2次,出現次數最少的字母出現了1次,2-1=1,1不是質數。

//注:此處原題解釋有誤,實際上是0,也不是質數。

noip2008提高第一題

分析:比較水的一道題,和noip2007的統計數字有點像,只不過多了一些要求,但是數據不是很大,因此可以用桶排,但是萬能的STL可以幫助我們解決這些,比較坑的一點就是判斷質數一定要特判0,1,2這樣的特殊值!

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int a[30];
string s;
int mini = 10000;

bool zhishu(int n)
{
    if (n == 0 || n == 1)
    return false;
    if (n == 2)
    return true;
    for (int i = 2; i * i <= n; i++)
    if (n % i == 0)
    return false;
    return true;
}

int main()
{
    cin >> s;
    int len = s.size();
    for (int i = 0; i < len; i++)
    a[s[i] - 'a']++;
    sort (a,a + 26);
    int maxi = a[25];
    for (int i = 0; i < 26; i++)
    if (a[i] < mini && a[i] != 0)
    mini = a[i];
    if (zhishu(maxi - mini))
    printf("Lucky Word\n%d",maxi-mini);
    else
    printf("No Answer\n0"); 
        
    return 0;
 } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM