攻防世界-新手练习-幂数加密

新手练习-幂数加密

2021年1月18日

13:57

[题目描述]

flag为cyberpeace{你解答出的八位大写字母}

 

[附件]

8842101220480224404014224202480122

 

[思路]

观察可知【附件】中给出数字串有7个0,而答案为8位字母,故尝试将0为分隔符。

分割后的数字串为

88421 122 48 2244 4 142242 248 122

 

上串为2的幂数

33210 011 23 1122 2 021121 123 011

发现与标准的幂数加密不同,每个字母中有重复的数字出现,但其实2个重复的幂数实际上相当于乘2,例如33代表的,就是2^3+2^3=2^4,也就是4。

根据幂数加密的原理,发现其实不用纠结于原理,直接把分割后的各个子串求和,再转字母即可。

代码:

while (cin)

    {

        sum=0;

        cin>>input;

        for(auto ch:input)

            sum += ch-'0';

        cout<<(char)('A' + sum - 1);   

    }

 

[答案]

cyberpeace{welldone}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值