1. 程式人生 > >NYOJ---題目62笨小熊

NYOJ---題目62笨小熊

描述

笨小熊的詞彙量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的機率非常大!
這種方法的具體描述如下:假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn-minn是一個質數,那麼笨小熊就認為這是個Lucky Word,這樣的單詞很可能就是正確的答案。

輸入
第一行資料N(0<N<100)表示測試資料組數。
每組測試資料輸入只有一行,是一個單詞,其中只可能出現小寫字母,並且長度小於100。
輸出
每組測試資料輸出共兩行,第一行是一個字串,假設輸入的的單詞是Lucky Word,那麼輸出“Lucky Word”,否則輸出“No Answer”;
第二行是一個整數,如果輸入單詞是Lucky Word,輸出maxn-minn的值,否則輸出0
樣例輸入
2
error
olympic
樣例輸出
Lucky Word
2
No Answer
0
來源
上傳者
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#define N 100
using namespace std;
bool prime[N];
void prim(bool prime[])
{
    prime[0]=false;
    prime[1]=false;
    for(int i=2;i<100;i++)
    {
        if(!prime[i])
            continue;
        for(int j=i*i;j<100;j+=i)
        {
            prime[j]=false;
        }
    }
}
int main()
{
    int n,m;
    int num[28];
    int b[28];
    char a[120];
    cin>>n;
    while(n--)
    {

       cin>>a;
       memset(num,0,sizeof(num));
       memset(prime,true,sizeof(prime));
       int len=strlen(a);
       int t=0;
       prim(prime);
       for(int i=0;i<len;i++)
       {
           t=a[i]-'a';
           num[t]++;
       }
       int count=0;
       for(int i=0;i<28;i++)
       {
           if(num[i])
           {
               b[count++]=num[i];
           }
       }
       sort(b,b+count);
       m=b[count-1]-b[0];
       if(prime[m])
       {
            printf("Lucky Word\n");
            printf("%d\n",m);
       }
       else
       {
           printf("No Answer\n");
           printf("0\n");
       }

    }
}