又是一道wa的题目,不晓得哪里不对,自己测试总觉得对了

Hugh_OverAc 2014-12-14 04:03:38
1067: 笨小猴(monkey)
Description
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
Input
多组输入:

每组输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。

Output
每组输出输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。
Sample Input
error
olympic
Sample Output
Lucky Word
2
No Answer
0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int Fuc(int x)
{
int k,i;
if(x==0)return 0;
k=(int)sqrt(x);
for(i=2;i<=k;i++)
{
if(x%i==0)
break;
}
if(i>k)
return 1;
else
return 0;
}
int main()
{
char str[101]={'\0'},Copy[101]={'\0'};
char Y[]="Lucky Word",N[]="No Answer";
int i,j,n,temp,temp1=0,result;
while(gets(str)!=NULL){
int num[101]={0};
n=strlen(str);
for(i=0;i<n;i++)
{
Copy[i]=str[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(str[i]==Copy[j])
num[i]++;
}
}
int maxn=num[1],minn=num[1];
for(i=0;i<n;i++)
{
if(num[i]>=maxn)maxn=num[i];
if(num[i]<=minn)minn=num[i];

}
temp=maxn-minn;
result=Fuc(temp);
if(result)
{
printf("%s\n",Y);
printf("%d\n",temp);
}
else
{
printf("%s\n",N);
printf("%d\n",temp1);
}
}
return 0;
}
...全文
127 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
logiciel 2014-12-15
  • 打赏
  • 举报
回复
LZ程序不能正确处理长度为1的单词。例如,输入是: a
GadyPu 2014-12-15
  • 打赏
  • 举报
回复
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define Size 100+2
#define Max 0x7ffffff
int IsPrim(int n)
{
	if (1 == n)
		return 0;
	int i;
	for (i = 2; i <= sqrt(n); i++)
	{
		if (0 == n%i)
			return 0;
	}
	return 1;
}
int Max_Min(char *str)
{
	int i, table[26] = { 0 };
	for (i = 0; i < strlen(str); i++)
		table[str[i] - 'a']++;
	int min=Max, max=-Max;
	for (i = 0; i < 26; i++)
	{
		if (table[i] > max)
			max = table[i];
		if (table[i] < min && table[i] > 0)
			min = table[i];
	}
	if (IsPrim(max - min))
		return max - min;
	return 0;
}
int main()
{
	int m;
	scanf("%d\n", &m);
	while (m--)
	{
		char buffer[Size] = { 0 };
		fgets(buffer, sizeof(buffer), stdin);
		buffer[strlen(buffer) - 1] = '\0';
		int temp = Max_Min(buffer);
		if (temp)
			printf("Lucky Word\n%d\n",temp);
		else
			printf("No Answer\n%d\n", temp);
	}
	return 0;
}

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧