[题目解析]压缩密文

压缩密文(compress)

时间限制: 1000 ms 空间限制: 262144 KB

题目描述

华华接到任务:要对一个仅有英文字母的密文进行压缩处理,将其中连续的重复字母压缩成“一个字母+个数”的形式。例如:AaaaaaaaAaaBbBaAC应压缩成a11b3a2c。但是华华拿到的密码已经被别人处理过,密文没有完全压缩好,处理起来反而更麻烦。如上例密文可能已变成Aa10b2BaAC。请编程帮华华完成任务。

输入

华华拿到的密文字串(串长度<=100,串中所有重复个数之和<=1000)

输出

完成处理的密文字串(其中的字母全部小写)

样例输入

Aa10b2BaAC

样例输出

a11b3a2c

啥也不说了,直接看注释↓

/*整体思路:
我们既然不能够直接压缩,那我们就先转换回以前的样子,然后再压缩,这样来做会很简单 
*/  
//注意,请不要抄袭,诚信做题
//本代码已添加反作弊 
#include<iostream>
#include<cstring>
using namespace std;
char a[10001],b[10001];
int main()
{
 cin>>a;
 for(int i=0;i<strlen(a);i++){//先转换成小写,方便后面统计和输出 
  if(a[i]>='A'&&a[i]<='Z'){
   a[i]=a[i]-'A'+'a';
  }
 }
 int flag=0,x=0,g=1;
 for(int i=strlen(a)-1;i>=0;i--){//注意一定要倒着来,因为数字处理方面很特殊,大家可以自己思考思考 
  if(a[i]>='0'&&a[i]<='9'){//如果当前字符是数字,那么就弄个flag来处理数字 
   if(flag==0){
    flag=1;
   }
   else{
    flag*=10;//每次乘十 
   }
   x+=flag*(a[i]-'0');//记得计算啊,在这里我们需要把一位或多位数字转换成一个数字 
  }
  else if(!(a[i]>='0'&&a[i]<='9')&&flag>0){//如果当前字符是数字前面那个字符的话 
   for(int j=g;j<=(g+x-1);j++){//我们前面计算的数字就派上用场了 
    b[j]=a[i];//这里需要用B数组转换回原来的样子 
   }
   g+=x;
   flag=0;//别忘了置零 
   x=0;
  }
  else{
   b[g]=a[i];//不是以上特殊情况就依次加入B数组 
   g++;
  }
 }
 char t='0';
 int s=0;
 for(int i=g-1;i>=0;i--){//接下来就是压缩环节 
  if(t==b[i]){//如果当前字符与上一个字符相等的话 
   s++; 
  }
  else{
   if(s==0&&t!='0'){//如果只有一个连续字符,并且这里有一个防止空格多出来的操作(我当时就是这么错的) 
    cout<<t;
   }
   else if(t!='0'){//如果有多个连续 
    cout<<t<<s+1;//S记得+1哦 
   }
   t=b[i];
   s=0;
  }
 }
}//完美结束 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用 `pycryptodome` 库来解析RSA密文。以下是一个简单的示例: ```python from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP # RSA密文和私钥 cipher_text = b'\x92\xd1\xee\x94\x82\xef\xfd\x1eU\x0f\x81\x9a\x8a\x98\x81\xbd\xdd\x19\xbb\x8f\xce\xa8\x9e\x1d\x6d\x06\x5d\x0f\x99\x06\x48\x7b\x98\xbf\x17\x17\x7f\x54\xde\x8c\x3d\x8c\x3b\x27\xec\x29\x94\x0c\x6e\xb7\x40\x87\x8d\x9f\x69\x1d\x8d\x5c\xb3\x0e\x64\x60\x83\x68\x0d\x0e\xf6\x46\x2a\x3e\xd5\x5c\x84\x1b\x9c\x70\x22\x3a\xfd\xdc\x0a\x7d\x13\xea\x28\x68\x2a\x6e\xcb\x4f\x42\x3f\x69\x9b\x0f\x16\x11\x11\x24\x9c\x39\x16\xee\x9f\x8c\x39\xf0\xae\x7e\x6d\x11\x6f\xbe\x3d\x97\x10\x4d\x3e\x0b\x0e\xf7\x9d\x43\x4b\x7a\x1e\x44\x0a\x2a\x81\x77\x47\x40\x61\x8d\x0b\x5c\x30\x15' private_key = b'-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQCfA6KlqyR8sZ3Bu7jXov0pnpPdX3pEzZyO6w+2m0cNvWmL9YQ\njQmUk+P9jF0xZz9r7DQjw8JpUTtZ6Z5J8LzXzqXvS5WuL1Bjg3aPcWhnuE2nEgk\n6Q8WwZwqJ0RzD4O2lSdOj8nG+V6rjvG8G+RkZi6kXrPZGtj3Yh+5FrWUJ8xKXaO\nC5qzjjeT4+MGYiE60gJGBGh4vQIDAQABAoGAFKm8pJcKZ2H0UZlO4wW4iFfb7ux\njRUvTjb4QfjC5hE5pHvzDjSdLzUeG23WfNl0OQJ8fWN4sL0/0UbLJLzC2VZJW5R\nBvzB5K0CwI1wL+5NvV9D7XeV6qR8W9zS8mQZ7Yx2y3AxlOv8U0fSbZ6I+94Dv1YB\nDf8kUhWmD9j5Q9JyMN0CQQD7Oiq7YhWYnJUjL4pwiHqXosxv4zqYqJxR2XaL5y2k\nSs9M6xxLx+xyXTr6J0wzJ+7H1E5JqI8a6cK0a9YRvGK9AkEAyf8SCCiE2c5j7y+E\nAQkVXJQgHl9Uc5n2JnA9c5S7a4X8OgjVzW0vJ/a3zGZik1VJCVm+V7sSncxh2O7z\nzQj8NjYvLwJBAL6RvDl8NvGaqQcXG0pWc2qzQwC/3JHw9p3OzB7MlJ+8YJf3SDQs\njzWvLcUg5gjl/4vMEkXJj+O5NyJm8RZOv9kCQQC4Ej8Z9GtYs5+X+s0Xk9VQK2il\nWNBX2KQ+5Nj6nbH5WgX5pH/2Fq6h7PYpT7fErDxhHw+uV8XvDwzDpTc6tW7jAkEA\n4kXf5LHcpC3aZrPZvZJYBx2k4sIa1VbRzC0YjDj6iV3o9yJ7p1UQD4Zf9F1DDXl5\nXm/6yfG4eV4qXu+uNz3KjUzS4w==\n-----END RSA PRIVATE KEY-----' # 使用私钥解密 private_key_obj = RSA.importKey(private_key) cipher = PKCS1_OAEP.new(private_key_obj) plain_text = cipher.decrypt(cipher_text) print(plain_text.decode('utf-8')) ``` 在这个示例中,我们将RSA密文和私钥作为字节串传递给 `RSA.importKey()` 方法来创建私钥对象。然后,我们使用私钥对象创建 `PKCS1_OAEP` 密码对象,并使用该对象解密密文。最后,我们将解密的明文打印到控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值