鸡哥的奇特密码(蓝桥杯)

鸡哥的奇特密码

问题描述

鸡哥是一个十分喜欢破解密码的密码学爱好者。在一次偶然的机会中,他发现了一份神秘的文档,文档上的密码只有字母 L 和 Q。经过仔细观察,鸡哥发现这不是一份普通的密码,它遵循着一个特殊的规则——任何两个相邻的 L 都会被解密成一个 L。鸡哥需要尽可能多地进行解密操作,直到无法再进行为止。

请你帮助鸡哥解密这份神秘的文档,找出经过尽可能多次解密操作后的密码。

输入格式
输入的第一行包含一个字符串 S,表示需要解密的密码。

字符串 S 的长度在 1 到 10000 之间,包含且只包含大写字母 L 或 Q。

输出格式
输出的第一行包含一个字符串,表示经过尽可能多次解密操作后的密码。

样例输入

LLLLQQQ

样例输出

LQQQ

模拟

#include<bits/stdc++.h>  // 包含常用库的头文件,例如vector, algorithm等
using namespace std;    // 使用标准命名空间

int main()
{
	string s;   // 定义一个字符串s用于存储输入的密码
	cin>>s;     // 从标准输入读取密码字符串s
	int flag=0; // 定义一个标记变量flag来标识是否遇到字符L

	// 遍历输入的字符串s中的每个字符
	for(int i=0;i<s.size();i++)
	{
		// 如果当前字符是'L'并且flag为1(即之前的字符也是'L'),则跳过当前字符(即'L'被解密)
		if(s[i]=='L'&&flag==1)
			continue;

		// 如果当前字符是'L'并且flag为0(即之前的字符不是'L'),则设置flag为1
		if(s[i]=='L'&&flag==0)
			flag=1;

		// 如果当前字符是'Q'并且flag为1(即之前的字符是'L'),则重置flag为0
		if(s[i]=='Q'&&flag==1)
			flag=0;

		// 输出当前字符,如果是连续的'L'则只输出第一个'L'
		cout<<s[i];
	}

	return 0; // 程序正常结束
}

这段代码实现了鸡哥的奇特密码的解密过程,通过逐个检查输入字符串中的字符并根据规则确定是否输出字符。代码中使用了一个标志变量flag来跟踪是否遇到了字符'L'。如果遇到连续的'L'字符,该程序将只输出第一个'L'并跳过后续的'L'字符,直到遇到一个'Q'字符,此时重置flag。这样,经过一遍扫描后,程序输出了解密后的密码。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运从未公平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值