NOIP2008 提高组 复赛 word 笨小猴
1.看完题目,是字符串操作。
2.做一个字母到整数的映射,a-0,b-1,c-2,......
3.开一个26个元素的整型数组,统计字母个数,完毕后,一次遍历,找出最大值,最小值。
4.最多次数-最小次数,对结果判定是否质数。
5.判定素数时,分三种情况讨论,0,1;2;3,4,5.....
6.代码在经历i<26时,写成了i<len,调试了3分钟。
7.样例通过后,提交AC
耗时:30分钟
难度:简单
附上AC代码,编译环境Dev-C++4.9.9.2
//2008 word 笨小猴
#include <stdio.h>
#include <string.h>
char s[100+10];
int a[26];
int main(){
int len;
int i,j;
int min,max;
int t;
memset(a,0,sizeof(a));
scanf("%s",s);
len=strlen(s);
for(i=0;i<len;i++){
a[s[i]-'a']++;
}
min=999;
max=-1;
for(i=0;i<26;i++){//找出最小值,最大值 ,此处len,应改成26 ,查了会
if(a[i]>0){
if(min>a[i])
min=a[i];
if(max<a[i])
max=a[i];
}
}
if(min!=999&&max!=-1){//判段是否质数
t=max-min;
if(t<2){
printf("No Answer\n");
printf("0\n");
}else if(t==2){
printf("Lucky Word\n");
printf("2\n");
}else{//t>2
for(i=2;i<t;i++)
if(t%i==0){//非质数
break;
}
if(i==t){//质数
printf("Lucky Word\n");
printf("%d\n",t);
}else{//非质数
printf("No Answer\n");
printf("0\n");
}
}
}else{
printf("No Answer\n");
printf("0\n");
}
return 0;
}