题解 P3880 【[JLOI2008]提示问题】
这个题目的难度似乎有点难啊!!!
提示1很简单,只需要把字母转为.,空格以及其他字符还是其他字符
提示2的难度稍稍增加,但也难不过我们!我们先找到三分之一,四舍五入用round
提示3是最坑人的,难啊!先要在提示2记录下来三分之一的最后一个字符所在的下标,提示3从下表这里开始往后找元音,找得到那就先把三分之一以内输出,再把后面的元音输出,不然就是三分之二以内输出!
代码,20ms,跑的飞快:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
string s;
double cnt = 0;
int pos, xpos;
void one(string s)
{
for(string::iterator it = s.begin(); it != s.end(); ++it)
{
if(*it == ' ')
{
printf(" ");
}
else if(isalpha(*it))
{
printf(".");
cnt++;
}
else
{
printf("%c", *it);
}
}
puts("");
}
void two(string s)
{
pos = round(cnt / 3);
int len = s.length() - 1;
int count = 0;
for(int i = 0; i <= len; i++)
{
if(isalpha(s[i]))
{
count++;
if(count == pos + 1)
{
xpos = i;
}
if(count <= pos)
{
printf("%c", s[i]);
}
else
{
printf(".");
}
}
else
{
printf("%c", s[i]);
}
}
puts("");
}
void three(string x)
{
int len = x.length() - 1, count = 0;
string s = x;
transform(s.begin(), s.end(), s.begin(), ::toupper);//全部转为大写
bool flag = false;
for(int i = xpos + 1; i <= len; i++)
{
if(s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U')
{
flag = true;
break;
}
}
if(flag)
{
int f = 0;
for(int i = 0; i <= len; i++)
{
if(count == pos && isalpha(x[i]))
{
f = i;
break;
}
else if(isalpha(x[i]))
{
count++;
if(count <= pos)
{
printf("%c", x[i]);
}
else
{
printf(".");
}
}
else
{
printf("%c", x[i]);
}
}
for(int i = f; i <= len; i++)
{
if(x[i] == 'a' || x[i] == 'e' || x[i] == 'i' || x[i] == 'o' || x[i] == 'u' || x[i] == 'A' || x[i] == 'E' || x[i] == 'I' || x[i] == 'O' || x[i] == 'U')
{
printf("%c", x[i]);
}
else
{
if(isalpha(x[i]))
{
printf(".");
}
else
{
printf("%c", x[i]);
}
}
}
}
else
{
int spos = round(cnt / 1.5), cnts = 0;//除以1.5就是三分之二
for(int i = 0; i <= len; i++)
{
if(isalpha(x[i]))
{
cnts++;
if(cnts <= spos)
{
printf("%c", x[i]);
}
else
{
printf(".");
}
}
else
{
printf("%c", x[i]);
}
}
}
}
int main()
{
getline(cin, s);
one(s);
two(s);
three(s);
return 0;
}
加上内存排名第一哦!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现