笨小熊

笨小熊
时间限制: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. }


你可能感兴趣的:(测试,iterator,iostream)