#include <iostream>
#include <string>
typedef unsigned int uint;
std::string simpletransform(
const std::string &line,
const std::string &key,
const uint number);
int main()
{
std::string line="thisisamessage";
uint number = 5;
std::string key = "32154";
std::cout<<simpletransform(line,key,number)<<std::endl;
return 0;
}
std::string simpletransform(
const std::string &line,
const std::string &key,
const uint number)
{
std::string resultstr;
std::string substr;
size_t N = line.size()%number;
size_t i=0;
for(size_t j=0;i<N-number;i++,j++)
{
if(i%number==0)
{
substr = line.substr(i,number);
j=0;
if(substr.size()!=number) break;
}
auto temp = static_cast<uint>(key[j])-49;
resultstr += substr[temp];
}
i=0;
for(size_t count =0;count!=number;count++)
{
auto p = static_cast<uint>(key[count])-49;
if(p>=N)
continue;
resultstr += substr[p];
}
return resultstr;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoKc3RkOjpzdHJpbmcgc2ltcGxldHJhbnNmb3JtKAoJY29uc3Qgc3RkOjpzdHJpbmcgJmxpbmUsCgljb25zdCBzdGQ6OnN0cmluZyAma2V5LAoJY29uc3QgdWludCBudW1iZXIpOwppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RyaW5nIGxpbmU9InRoaXNpc2FtZXNzYWdlIjsKCXVpbnQgbnVtYmVyID0gNTsKICAgIHN0ZDo6c3RyaW5nIGtleSA9ICIzMjE1NCI7CglzdGQ6OmNvdXQ8PHNpbXBsZXRyYW5zZm9ybShsaW5lLGtleSxudW1iZXIpPDxzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQpzdGQ6OnN0cmluZyBzaW1wbGV0cmFuc2Zvcm0oCgljb25zdCBzdGQ6OnN0cmluZyAmbGluZSwKCWNvbnN0IHN0ZDo6c3RyaW5nICZrZXksCgljb25zdCB1aW50IG51bWJlcikKCXsKCXN0ZDo6c3RyaW5nIHJlc3VsdHN0cjsKCXN0ZDo6c3RyaW5nIHN1YnN0cjsKCXNpemVfdCBOID0gbGluZS5zaXplKCklbnVtYmVyOwoJc2l6ZV90IGk9MDsKCWZvcihzaXplX3Qgaj0wO2k8Ti1udW1iZXI7aSsrLGorKykKCQl7CgkJaWYoaSVudW1iZXI9PTApCgkJCXsKCQkJc3Vic3RyID0gbGluZS5zdWJzdHIoaSxudW1iZXIpOwoJCQlqPTA7CgkJCWlmKHN1YnN0ci5zaXplKCkhPW51bWJlcikgYnJlYWs7CgkJCX0KCQlhdXRvIHRlbXAgPSBzdGF0aWNfY2FzdDx1aW50PihrZXlbal0pLTQ5OwoJCXJlc3VsdHN0ciArPSBzdWJzdHJbdGVtcF07CgkJfQoJaT0wOwoJZm9yKHNpemVfdCBjb3VudCA9MDtjb3VudCE9bnVtYmVyO2NvdW50KyspCgkJewoJCWF1dG8gcCA9IHN0YXRpY19jYXN0PHVpbnQ+KGtleVtjb3VudF0pLTQ5OwoJCWlmKHA+PU4pCgkJCWNvbnRpbnVlOwoJCXJlc3VsdHN0ciArPSBzdWJzdHJbcF07CgkJfQoJcmV0dXJuIHJlc3VsdHN0cjsKCX0K