笨小熊

来源:互联网 发布:剑灵女捏脸数据导入图 编辑:程序博客网 时间:2024/04/24 14:05
笨小熊
时间限制: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.usingnamespace std;
05. 
06.boolisPrime(int n)
07.{
08.if(n < 2)
09.returnfalse;
10.for(int i = 2; i * i < n; i++)
11.{
12.if(n % i == 0)
13.returnfalse;
14.}
15.returntrue;
16.}
17.intmain()
18.{
19.intsamples;//测试数据组数
20. 
21.cin >> samples;
22.cin.get();
23.while(samples--)
24.{
25.map<char,int> alpha;
26.charch = '0';
27.inti = 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.intr = 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.return0;
48.}

下面这个是AC过了的,代码如下:

01.#include <iostream>
02.#include <map>
03.#include <ctime>
04.#include <cstdio>
05.usingnamespace std;
06. 
07.boolisPrime(int n)
08.{
09.if(n < 2)
10.returnfalse;
11.for(int i = 2; i <= n/2; i++)
12.{
13.if(n % i == 0)
14.returnfalse;
15.}
16.returntrue;
17.}
18.intmain()
19.{
20. 
21.intsamples;//测试数据组数
22.cin >> samples;
23.while(samples--)
24.{
25.// clock_t begin = clock();
26.inti = 0;
27.intalpha[26];
28.charstr[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.intmax = 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.intr = 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.return0;
54.}