2441: 【普及-】【P1125】笨小猴
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:76
解决:20
题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设 是单词中出现次数最多的字母的出现次数, 是单词中出现次数最少的字母的出现次数,如果 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。
输入
一个单词,其中只可能出现小写字母,并且长度小于 。
输出
共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出 Lucky Word
,否则输出 No Answer
;
第二行是一个整数,如果输入单词是 Lucky Word
,输出 的值,否则输出 。
样例输入 复制
error
样例输出 复制
Lucky Word
2
提示
【输入输出样例 1 解释】
单词 error
中出现最多的字母 出现了 次,出现次数最少的字母出现了 次,, 是质数。
【输入输出样例 2 解释】
单词 olympic
中出现最多的字母 出现了 次,出现次数最少的字母出现了 次,, 不是质数。
(本处原题面错误已经修正)
noip2008 提高第一题
#include<bits/stdc++.h> using namespace std; int main(){ char a[110]; int ans[26]={0}; //ans[0]到ans[25]分别代表'a'到'z'出现的次数,注意要初始化 int l,mmax,mmin,delta; //字符长度,出现次数最多的字母出现次数和出现次数最少的字母出现次数,以及差值 scanf("%s",a); l=strlen(a); for (int i=0;i<l;i++) ans[a[i]-'a']++; //统计增加某个字母的数量 mmax=0;mmin=10000; //最大最小值初始化 for (int i=0;i<26;i++) { //寻找每个字母的最大值和最小值 if (ans[i]>mmax) //如果超过最大值 mmax=ans[i]; if (ans[i]!=0&&ans[i]<mmin) //如果小于最小值,但是不能为0 mmin=ans[i]; } delta=mmax-mmin; if (delta==0||delta==1) { //质数特判 printf("No Answer\n0\n"); return 0; } for (int h=2;h*h<=delta;h++) //枚举因数 if (delta%h==0) { printf("No Answer\n0\n"); //直接输出答案并退出程序 return 0; } printf("Lucky Word\n%d\n",mmax-mmin); return 0; }