標籤:
洛穀1125 笨小猴
本題地址: http://www.luogu.org/problem/show?pid=1125
題目描述
笨小猴的詞彙量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經實驗證明,用這種方法去選擇選項的時候選對的幾率非常大!
這種方法的具體描述如下:假設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 Word2[output2]No Answer0
說明
【輸入輸出範例1解釋】
單詞error中出現最多的字母r出現了3次,出現次數最少的字母出現了1次,3-1=2,2是質數。
【輸入輸出範例2解釋】
單詞olympic中出現最多的字母i出現了2次,出現次數最少的字母出現了1次,2-1=1,1不是質數。
//註:此處原題解釋有誤,實際上是0,也不是質數。
noip2008提高第一題
題解
類比+質數判斷
又是一道類比題(原來英語選擇還可以這樣做。。)。首先我們需要求出單詞中出現最多和最少的字母的次數(具體操作請看代碼),作差。重點是質數的判斷,我們知道一個大於1的自然數,除了1和它本身外,不能被其他自然數(包括質數)整除,換句話說就是該數除了1和它本身以外不再有其他的因數,否則稱為合數。所以,我們需要用一個函數來枚舉因數,如果該數除了1和它本身以外不再有其他的因數,那麼它就是我們要找的質數。最後輸出結果。下面附上代碼。
代碼
- program word;
- var
- l,n,m,maxn,minn,i:longint;
- s:string;
- a:array[1..26] of longint;
- function prime(a:longint):boolean;
- begin
- prime:=true;
- if (a=0) or (a=1) then
- begin
- prime:=false;
- exit;
- end;
- if a=2 then exit;
- for i:=2 to trunc(sqrt(a)+0.5) do
- begin
- if (a mod i=0) then prime:=false;
- break;
- end;
- end;
- begin
- readln(s);
- maxn:=0;
- minn:=100;
- m:=0;
- fillchar(a,sizeof(a),0);
- l:=length(s);
- for i:=1 to l do
- inc(a[ord(s[i])-96]);
- for i:=1 to 26 do
- begin
- if a[i]>maxn then maxn:=a[i];
- if (a[i]<minn) and (a[i]<>0) then minn:=a[i];
- end;
- m:=maxn-minn;
- if prime(m) then
- begin
- writeln(‘Lucky Word‘);
- writeln(m)
- end
- else
- begin
- writeln(‘No Answer‘);
- writeln(0);
- end;
- end.
(本文系筆者原創,未經允許不得轉載)
洛穀1125 笨小猴 解題報告