閱讀606 返回首頁    go 阿裏雲 go 技術社區[雲棲]


笨小熊

笨小熊
時間限製: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


我一開始使用map容器,不過超時了,我也放出來!

代碼如下:

01.#include <iostream>
02.#include <map>
03.#include <cstdio>
04.using namespace std;
05. 
06.bool isPrime(int n)
07.{
08.if (n < 2)
09.return false;
10.for (int i = 2; i * i < n; i++)
11.{
12.if (n % i == 0)
13.return false;
14.}
15.return true;
16.}
17.int main()
18.{
19.int samples;//測試數據組數
20. 
21.cin >> samples;
22.cin.get();
23.while (samples--)
24.{
25.map<char, int> alpha;
26.char ch = '0';
27.int i = 0;
28.while (ch != '\n')
29.{
30.ch = getchar();
31.alpha[ch]++;
32.}
33.map<char, int>::iterator min = alpha.begin(),
34.max = alpha.end();
35.max--;
36.int r = max->second - min->second;
37.if (isPrime(r))
38.cout << "Lucky Word" << endl << r << endl;
39.else
40.cout << "No Answer" << endl << 0 << endl;
41. 
42. 
43. 
44. 
45.}
46. 
47.return 0;
48.}

下麵這個是AC過了的,代碼如下:

01.#include <iostream>
02.#include <map>
03.#include <ctime>
04.#include <cstdio>
05.using namespace std;
06. 
07.bool isPrime(int n)
08.{
09.if (n < 2)
10.return false;
11.for (int i = 2; i <= n/2; i++)
12.{
13.if (n % i == 0)
14.return false;
15.}
16.return true;
17.}
18.int main()
19.{
20. 
21.int samples;//測試數據組數
22.cin >> samples;
23.while (samples--)
24.{
25.// clock_t begin = clock();
26.int i = 0;
27.int alpha[26];
28.char str[102];
29.scanf("%s", str);
30.for (i = 0; i < 26; i++)
31.alpha[i] = 0;
32.for (i = 0; str[i] != '\0'; i++)
33.{
34.alpha[(str[i] - 'a')]++;
35.}
36.int max = 1, min = 100;
37.for (i = 0; i < 26; i++)
38.{
39.if (alpha[i] != 0 && max < alpha[i])
40.max = alpha[i];
41.if (alpha[i] != 0 && min > alpha[i])
42.min = alpha[i];
43.}
44.//cout << max << " " << min << endl;
45.int r = max - min;
46.if (isPrime(r))
47.cout << "Lucky Word" << endl << r << endl;
48.else
49.cout << "No Answer" << endl << 0 << endl;
50.// cout << "TIME:" << clock()- begin << "ms" << endl;
51.}
52. 
53.return 0;
54.}


最後更新:2017-04-02 15:14:52

  上一篇:go 雞兔同籠
  下一篇:go android係統常用URI