讨论 / 为什么输出这个?(C语言)
可可鸭 2014-08-30 18:31:33
点我顶贴 收藏 删除
#include "stdio.h"

#include "string.h"

char c[110];

int a[200]={0};

int prime(int n)

{

int i;

if(n<2) return 0;

for(i=2;i*i<=n;i++)

if(n%i==0)

return 0;

return 1;

}

int main()

{

freopen("monkey.in","r",stdin);

freopen("monkey.out","r",stdout);

int i,max=-99999,min=99999,n;

gets(c);

n=strlen(c);

for(i=0;i<n;i++)

{

a[c[i]]++;

if(a[c[i]]>max) max=a[c[i]];

if(a[c[i]]<min) min=a[c[i]];

}

if(prime(max-min))

printf("Lucky Word\n%d",max-min);

else

printf("No Answer\n%d",max-min);

return 0;

}

输出是�

测试数据 #1: Runtime Error, time=0ms, mem=640KB, score=0

测试数据 #2: Runtime Error, time=0ms, mem=636KB, score=0

测试数据 #3: Runtime Error, time=0ms, mem=640KB, score=0

测试数据 #4: Runtime Error, time=0ms, mem=640KB, score=0

测试数据 #5: Runtime Error, time=0ms, mem=640KB, score=0

测试数据 #6: Runtime Error, time=0ms, mem=636KB, score=0

测试数据 #7: Runtime Error, time=0ms, mem=640KB, score=0

测试数据 #8: Runtime Error, time=0ms, mem=636KB, score=0

测试数据 #9: Runtime Error, time=0ms, mem=640KB, score=0

测试数据 #10: Runtime Error, time=0ms, mem=640KB, score=0

Time = 0ms Mem = 640KB Score= 0

#1 A hy@2014-08-31 04:35:50
回复 删除
这道题你应该是判断是否是质数那里错了,我的程序是这样的

#include "stdio.h"

char a[110];

int f[30],x[110];

int main()

{

int max=0,min=100,n=0,i,j,ans;

scanf("%s",a);

for(i=0;i<=105;i++)

if(a[i]!='\0') n++;

else break;

for(i=0;i<n;i++)

f[a[i]-'a'+1]++;

for(i=1;i<=30;i++)

{

if(f[i]>max) max=f[i];

if(f[i]<min && f[i]) min=f[i];

}

ans=max-min;

for(i=2;i<=100;i++) x[i]=1;

for(i=2;i<=100;i++)

if(x[i])

for(j=i*2;j<=100;j+=i)

x[j]=0;

if(x[ans]) printf("Lucky Word\n%d",ans);

else printf("No Answer\n0");

return 0;

}

那个判断是否是质数那里要开一个数组标记的。。

#2 A hy@2014-08-31 05:12:15
回复 删除
咦不对。。你那个判断那个好像是对的
查看更多回复
提交回复