HUST Online Judge WebBoard
Problem 1124 >> 为什么输出超限了?
201803140220 @ 2018-12-10 19:55:50
[ Quote ] [ Edit ] [ Delete ] 1#
#include<stdio.h>
#include<math.h>

int prime(int x);
int main()
{
int i,j,k,s,m,n,max,min;
char a[100];
int b[100];
while(scanf("%s",a))
{
for(j=0;j<100;j++)
{
b[j]=1;
if(a[j]=='\0')
{
k=j;
break;
}
}
for(m=0;m<k;m++)
{
for(n=m+1;n<k;n++)
{
if(a[m]==a[n])
{
b[m]++;
}
}
}
max=b[0];
min=b[0];
for(m=0;m<k;m++)
{
if(b[m]>max)
max=b[m];
if(b[m]<min)
min=b[m];
}
s=max-min;
if(prime(s))
{
printf("Lucky Word\n");
printf("%d\n",s);
}
else
{
printf("No Answer\n");
printf("0\n");
}
}

return 0;
}


int prime(int x)
{
int i,a=0,k;
if(x<2)
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;
}
admin @ 2018-12-18 10:13:48
[ Quote ] [ Edit ] [ Delete ] 2#
回201803140220 :
看这段代码
for(m=0;m<k;m++)
{
for(n=m+1;n<k;n++)
{
if(a[m]==a[n])
{
b[m]++;
}
}
}
假如输入数据(假如这是个单词 hheelloo
那么b[]数组的值为 21212121
max=2
min=1
实际上max=2 min=2
admin @ 2018-12-18 10:37:16
[ Quote ] [ Edit ] [ Delete ] 3#

统计字母在单词重出现的次数
可以这样
char a[100];
gets(a);
int b[26];
for(int i=0;i<26;i++)
b[i]=0;
for(int i=0;i<strlen(a);i++)
b[a[i]-'a']++;


这样统计出来的字母是从小到大序列
201803140220 @ 2019-03-26 20:07:34
[ Quote ] [ Edit ] [ Delete ] 4#
#include<stdio.h>
#include<math.h>
#include<string.h>

int prime(int x);

int main()
{
int k,s,i,max,min;
char a[100];
int b[26]={0};

while(scanf("%s",a)) //输入字符串
{
k=strlen(a);

for(i=0;i<=k;i++) //计算相同字母数
b[a[i]-'a']++;

for(i=0;i<26;i++) //初始化max,min
if(b[i]!=0)
{
max=b[i];
min=b[i];
break;
}

for(i=0;i<26;i++) //计算最大及最小字母数
if(b[i]!=0)
{
if(b[i]>max)
max=b[i];
if(b[i]<min)
min=b[i];
}

s=max-min; //计算差值

if(prime(s)) //判断是否为素数分类输出
{
printf("Lucky Word\n");
printf("%d\n",s);
}
else
{
printf("No Answer\n");
printf("0\n");
}

for(i=0;i<26;i++) //重置数组b
b[i]=0;
}


return 0;
}


int prime(int x)
{
int i,k;
if(x<2)
return 0;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0)
break;
if(i>k)
return 1;
else
return 0;
}

--------------------------------------------------------------
仍是输出超限
201803140220 @ 2019-03-26 20:08:05
[ Quote ] [ Edit ] [ Delete ] 5#
求解
201703120121 @ 2019-03-26 20:26:01
[ Quote ] [ Edit ] [ Delete ] 6#
while(scanf("%s",a)) //输入字符串
换成while(scanf("%s",a)!=EOF) //输入字符串
201803140220 @ 2019-03-26 21:15:26
[ Quote ] [ Edit ] [ Delete ] 7#
多谢