社区讨论
80求调,WA#9#10,玄关
P3880[JLOI2008] 提示问题参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mdb6os0p
- 此快照首次捕获于
- 2025/07/20 12:35 8 个月前
- 此快照最后确认于
- 2025/11/04 04:04 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
string a;
char b[55];
bool c[55];
bool d[55];
double sum;
char g[10] = {'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'};
int main() {
getline(cin, a);
strcpy(b, a.c_str());
int k = a.length() - 1;
for (int i = 0; i <= k; i++) {
d[i] = 0;
c[0] = 0;
}
for (int i = 0; i <= k; i++) {
if (isalpha(b[i]) != 0) {
c[i] = 1;
sum++;
for (int y = 0; y < 10; y++) {
if (b[i] == g[y]) {
d[i] = 1;
}
}
} else {
c[i] = 0;
}
}
//第一种操作,全.
for (int i = 0; i <= k; i++) {
if (c[i] == 1) {
cout << ".";
} else
cout << b[i];
}
cout << endl;
//第二种操作,取三分之一(接近取整式)保留,其余.
double f = sum / 3;
int h = int(sum / 3);
//cout << "f:" << f << endl;
//cout << "h1:" << h << endl;
if (f - h > 0.5) {
h = int(sum / 3 ) + 1;
}
//cout << "h2:" << h << endl;
//cout << "h:" << h << endl;
int p = 0;
int q = 0;
while (p < h) {
cout << b[q];
if (c[q] == 1) {
p++;
}
q++;
}
for (int i = q; i <= k; i++) {
if (c[i] == 1) {
cout << ".";
} else
cout << b[i];
}
cout << endl;
//第三种操作,二基础上保留剩余三分之二部分中的元音,若无则直接保留三分之二
int pan = 0;
for (int i = h; i <= k; i++) {
if (d[i] == 1) {
pan = 1;
}
}
if (pan == 1) {
int p = 0;
int q = 0;
while (p < h) {
cout << b[q];
if (c[q] == 1) {
p++;
}
q++;
}
for (int i = q; i <= k; i++) {
if (c[i] == 1 && d[i] != 1) {
cout << ".";
} else
cout << b[i];
}
} else {
double f = sum / 3 * 2;
int h = int(sum / 3 * 2);
if (f - h > 0.5) {
h = int(sum / 3 * 2 + 1);
}
int p = 0;
int q = 0;
while (p < h) {
cout << b[q];
if (c[q] == 1) {
p++;
}
q++;
}
for (int i = q; i <= k; i++) {
if (c[i] == 1) {
cout << ".";
} else
cout << b[i];
}
}
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...