第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——K题 黑洞密码

题目描述

近些日子,某科学家接受到了来自外太空的神秘讯息,在经过了一段时间的研究后,科学家发现讯息是一个由字母和数字组成的字符串str,想要破译,需要通过一定的规则将字符串进行转换。规则如下:

1.确定讯息的长度为32;

2.字符串中第 4 n + 1 ∼ 4 n + 4 4n+1\sim4n+4 4n+14n+4的字母和第 4 n + 1 ∼ 4 n + 4 ( 0 ≤ n ≤ 3 ) 4n+1\sim4n+4(0 \leq n \leq 3) 4n+14n+4(0n3)的数字为一组,共4组;

3.每组的第1,2,3,4个字符分别往后推每组第1,2,3,4个数字个数 例:如第一个字母为a,第一个数字为3,转换后变为d,‘z’之后是’B’,‘Z’之后是’b’;

4.将每组内部字母的顺序颠倒;

5.将四组字符合并就是最后的讯息。

输入描述

输入一个长度为32的字符串

输出描述

输出转换后的密码

示例

输入

Zzc6Ltw2OD4yR640263W7G8G30HW9C71
输出

RgCgJQwxJfYCDeQG

AC的C++代码

#include <iostream>
#include <string>
using namespace std;
string st,s1,s2;
int main()
{
	cin>>st;
	for (int i=0;i<st.size();i++)
	  if (st[i]>='0' && st[i]<='9') 
	  	s2+=st[i];
	  else 
	  	s1+=st[i];
	  	
	for (int i=0;i<s1.size();i++)
		for (int k=1;k<=(int)(s2[i]-48);k++)
		{
			if (s1[i]=='z') s1[i]='B';
			else if (s1[i]=='Z') s1[i]='b';
			else s1[i]++;
		} 
		
	for (int i=3;i<s1.size();i+=4)
		for (int j=i;j>=i-3;j--)
		  cout<<s1[j];
} 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值