C++,求大佬看看

P1125 [NOIP2008 提高组] 笨小猴

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


|