暑假作业竟然如此芳香(hdu4144模拟水题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4144

题意就是有这么一种加密方式(不知道哪个弟弟会用这种显而易见的东西)。字母表中每一个字母都可以用数字来哈希,比如A对应0,B对应1,C对应2。对于一个字符串

例如ABC,先把字符串中每个字母按照其对应的哈希值编码,变成123,再把每个数字按照五位二进制数展开,得到000010001000011,规定0用任意大写字母代替,1用任意数字代替

从的得到加密后的串ABCD1ABC1ABCD11(不唯一,逃),现在题目给加密后的串,要求按照以上规则反推出原串。

 

思路:直接按照规则,每次处理5个字符,就酱紫。

代码如下:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 10000+5;
 4 char ans[maxn];
 5 int main(){
 6     int t;
 7     while(~scanf("%d",&t)){
 8         scanf("%s",ans);
 9         for(int i=0;i<t;i+=5){
10             int num=0;
11             for(int j=0;j<5;j++){
12                 if(isdigit(ans[i+j])){
13                         num+=(1<<(4-j));
14                 }else continue;
15             }
16             cout<<char(num+65);
17         }
18         cout<<endl;
19     }
20     return 0;
21 }

 

posted @ 2019-07-04 23:56  龙刃已准备出鞘  阅读(158)  评论(0)    收藏  举报