阅读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