1. 程式人生 > >笨小熊 南陽acm62

笨小熊 南陽acm62

ins 並且 class == IT include mpi href strlen

笨小熊

時間限制:2000 ms | 內存限制:65535 KB 難度:2
描述

笨小熊的詞匯量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的幾率非常大!
這種方法的具體描述如下:假設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
來源
NOIP2008
上傳者
hzyqazasdf
算法思想:定義一個數組b[99]用來記錄abcd......出現的次數,然後再找出max,min,最後在判斷是否為素數, 具體看代碼:

#include<stdio.h>
#include<string.h>
//用來判斷是否為素數
int fun(int n)
{
int i;
if(n<2) return 0;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return n;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
char a[101];
int i,len,max,min;
int b[99]={0};
max=0;
min=999;
scanf("%s",a);
len=strlen(a);
//用來記錄abcd......個數
for(i=0;i<len;i++)
b[a[i]-97]++;
//找出最大和最小
for(i=0;i<26;i++)
{
if(max<b[i])
max=b[i];
if(min>b[i]&&b[i]!=0)
min=b[i];
}
if(fun(max-min)!=0)
printf("Lucky Word\n%d\n",max-min);
else
printf("No Answer\n0\n");
}
return 0;
}

笨小熊 南陽acm62