社区讨论
AC分享一下思路
P1125[NOIP 2008 提高组] 笨小猴参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6mjxij
- 此快照首次捕获于
- 2025/11/20 07:19 4 个月前
- 此快照最后确认于
- 2025/11/20 07:19 4 个月前
CPP
#include<iostream>
#include<algorithm> // 超级好用的头文件 c+大法好
#include<math.h>
#include<string>
using namespace std;
bool is_prenum(int n);
struct abc {
char x;
int count = 1;
}; //设置一个结构体来储存 每个字母和他们的出现次数
int main() {
string s; //这个长单词
struct abc k[27];
int i,j=0,judgment=0,max=0,min=101,jd;
cin >> s;
sort(s.begin(), s.end()); // 把这个字符串排序 就是所有相同的字母放到一起
for (i = 0; i < s.length(); i++) {// 然后开始遍历这个字符串
if (k[j].x != s[i]) {
if (judgment > j) {// 遇到不一样的字母就用结构体的下一个单元储存 judgment是用来判断 j 是不是应该++了 当judgment大于j时 已经是第二个字母了
j = judgment;
}
k[j].x = s[i];
judgment++;
}
else {
k[j].count++;
}
}
for (i = 0; i < judgment; i++) {////// 然后遍历结构体 比较count的大小 存储在max和min中
if (max<k[i].count) {
max = k[i].count;
}
if (min > k[i].count) {
min = k[i].count;
}
}
jd = max - min;////// max-min 方便判断质数
if (is_prenum(jd)) {
cout << "Lucky Word" << endl << jd << endl;
}
else {
cout << "No Answer" << endl << "0" << endl;
}
system("pause");
return 0;
}
bool is_prenum(int n) {
if (n < 2) {
return false;
}
int i;
for (i = 2; i < sqrt(n); i++) {
if (n%i == 0) {
return false;
}
}
return true;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...