80分求助
查看原帖
80分求助
112917
Eason_AC楼主2020/9/26 20:50

最后的两个点 WA 掉了qwq:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;

string s;
int pk[57];
map<int, int> pk2;

int main() {
	getline(cin, s);
	int len = s.size();
	for(int i = 0; i < len; ++i)
		if((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) {
			pk[++pk[0]] = i;	//将字母出现的位置记录下来
			pk2[i] = pk[0];
			printf(".");
		} else	printf("%c", s[i]);
	puts("");
	int key1 = floor(pk[0] / 3.0 + 0.5), key2 = floor((pk[0] * 2) / 3.0 + 0.5), vowel = 0;
//	printf("%d %d\n", key1, key2);
	for(int i = 0; i < len; ++i)
		if(pk2[i] >= 1 && pk2[i] <= key1)	printf("%c", s[i]);
		else if(pk2[i])	printf(".");
		else printf("%c", s[i]);
	puts("");
	for(int i = key1 + 1; i < len; ++i)
		if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U') {
			vowel = 1;
			break;
		}
	if(vowel) {
		for(int i = 0; i < len; ++i)
			if(pk2[i] >= 1 && pk2[i] <= key1)	printf("%c", s[i]);
			else if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U')	printf("%c", s[i]);
			else if(pk2[i])	printf(".");
			else	printf("%c", s[i]);
	} else {
		for(int i = 0; i < len; ++i)
			if(pk2[i] >= 1 && pk2[i] <= key2)	printf("%c", s[i]);
			else if(pk2[i])	printf(".");
			else	printf("%c", s[i]);
	}
}
2020/9/26 20:50
加载中...