or不能这么用,如果按照你这么写的话应该是`x==2 or x==3 or x==5...`
@[3316084249z](/user/811469)
by 杜都督 @ 2024-02-29 17:53:22
@[杜都督](/user/39279) 谢谢,我改了再看看
by None_g @ 2024-02-29 22:01:51
@[杜都督](/user/39279) 坏了,还顺便改了几个==号,但是全都输出的是No Answer
```
#include<bits/stdc++.h>
using namespace std;
int zhi(int x)
{
if (x==2 or x==3 or x==5 or x==7 or x==11 or x==13 or x==17 or x==19 or x==23 or x==29 or x==31 or x==37 or x==41 or x==43 or x==47 or x==53 or x==59 or x==61 or x==67 or x==71 or x==73 or x==79 or x==83 or x==89 or x==97)
return 1;
else
return 0;
}
int main()
{
char a[200];
int n,m,p,i,lo,b[200];
cin>>n>>a;
lo=strlen(a);
for (i=0;1<lo;i++)
{
b[i]=a[i];
}
sort(b,b+lo);
for (i=1;i<lo;i++)
{
if (b[i]==b[i-1])
n++;
else
break;
}
for (i=lo-1;i>0;i--)
{
if (b[i]==b[i+1])
m++;
else
break;
}
p=n-m;
if (zhi(p)==1)
cout<<"Lucky Word"<<endl<<p;
else
cout<<"No Answer"<<endl<<"0";
return 0;
}
```
by None_g @ 2024-02-29 22:10:49
@[3316084249z](/user/811469)
计算最多字母和最少字母的逻辑不对,你现在这么写等同于按ASCII码大小排序,和统计同一字母出现次数无关
何况你原来的代码也有很多错误,比如1<lo应该是i<lo,n和m用于计数前没有赋值为0,m++所在的if应该是b[i]==b[i-1],p应该=abs(n-m)
不过这都不重要了,考虑重写字母数统计逻辑
by 杜都督 @ 2024-02-29 22:40:36
@[3316084249z](/user/811469)
还有你这个cin>>n也是多余的,输入数据只有一个单词
by 杜都督 @ 2024-02-29 22:43:55
@[杜都督](/user/39279) (抱歉才想起来)谢谢大佬,我在改改逻辑
by None_g @ 2024-03-04 22:29:12
zhi函数错了,or这么多,而且还用错了
```cpp
bool zhi(int x)
{
if (n == 1 or n == 0)
{
return false;
}
for (int i = 2; i < sqrt(n); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
```
by yuting_xie @ 2024-03-06 13:33:50