试题描述 |
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 |
输入 |
只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。 |
输出 |
共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”; 第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。 |
输入示例 |
【输入样例1】 error 【输入样例2】 olympic |
输出示例 |
【输出样例1】 Lucky Word 2 【输出样例2】 No Answer 0 |
其他说明 |
【输入输出样例1解释】单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。 【输入输出样例2解释】单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。 |
就是循环有点多。另外注意答案中"Lucky Word"和"No Answer"的大写。
1 #include <iostream> 2 3 using namespace std; 4 char s[105]; 5 int a[2000]; 6 int main() 7 { 8 scanf("%s",s); 9 memset(a,0,sizeof(a)); //数组清空 10 int l=20000,r=0,i,str=strlen(s); 11 for(i=0;i<str;i++) 12 { 13 a[(int)s[i]]++; 14 if((int)s[i]<l) l=(int)s[i]; //找边界 15 if((int)s[i]>r) r=(int)s[i]; 16 } 17 int maxn=0,minn=2000; 18 for(i=l;i<=r;i++) //在范围中找最大以及大于0的最小 19 { 20 if(a[i]>maxn) maxn=a[i]; 21 if(a[i]<minn && a[i]>0) minn=a[i]; 22 } 23 int temp=maxn-minn; 24 for(i=2;i<temp;i++) //判断质数 25 if(temp%i==0) break; 26 if(i==temp) {cout<<"Lucky Word"<<endl;cout<<temp;} //注意大写 27 else {cout<<"No Answer"<<endl;cout<<"0";} 28 //system("pause"); 29 return 0; 30 }
时间: 2024-12-28 16:29:51