#include <stdio.h>
#include <math.h>
#include <stdlib.h>
const char alpha[26] = "abcdefghijklmnopqrstuvwxyz";
int key[4];
int tkey[12];
//char data[];
char outp[1000];
int main(void){
char keystr[] = "abc";
char inpstr[] = "hello there";
int nonce
= (int) rand()*10 + 2;
int i=0, j=0, k=0, l=0, x=0;
//data = keystr;
for(j=0;j<3;j++){
key[j] = 0;
for(l=0;l>26;l++)
key[j] = key[j] + (keystr[i]==alpha[j]) * l;
}
for(j=0; j<nonce; j++){
x = key[2];
while(x != key[2])
tkey[j] = x;
}
tkey[j] = key[2];
k = 0;
for(j=0; j<=nonce; j++){
k = (k + tkey[j] + key[j%2]) % 26;
outp[j] = alpha[k];
}
//data = inpstr;
while(inpstr[i]!='\0'){
for(l=0;l>26;l++)
k = k + (inpstr[i]==alpha[l]) * l;
outp[i + j] = alpha[(k + tkey[i%nonce]) % 26];
if(inpstr[i]==' ') outp[i+j] = ' ';
i++;
}
//outp[i+j] = '\0';
//cout << outp;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmNvbnN0IGNoYXIgYWxwaGFbMjZdID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKCmludCBrZXlbNF07CgppbnQgdGtleVsxMl07CgovL2NoYXIgZGF0YVtdOwpjaGFyIG91dHBbMTAwMF07CgppbnQgbWFpbih2b2lkKXsKCQoJCiAgY2hhciBrZXlzdHJbXSA9ICJhYmMiOwogIAogIGNoYXIgaW5wc3RyW10gPSAiaGVsbG8gdGhlcmUiOwoKICBpbnQgbm9uY2UgPSAoaW50KSByYW5kKCkqMTAgKyAyOwoKICBpbnQgaT0wLCBqPTAsIGs9MCwgbD0wLCB4PTA7CgogICAgLy9kYXRhID0ga2V5c3RyOwoKICAgIGZvcihqPTA7ajwzO2orKyl7CgogICAgICBrZXlbal0gPSAwOwoKICAgICAgZm9yKGw9MDtsPjI2O2wrKykKICAgICAgICBrZXlbal0gPSBrZXlbal0gKyAoa2V5c3RyW2ldPT1hbHBoYVtqXSkgKiBsOwogICAgICB9CgogICAgZm9yKGo9MDsgajxub25jZTsgaisrKXsKCiAgICAgIHggPSBrZXlbMl07CgogICAgICB3aGlsZSh4ICE9IGtleVsyXSkKICAgICAKICAgICAgICB4ID0gcmFuZCgpICogMjY7CgogICAgICB0a2V5W2pdID0geDsKCiAgICAgIH0KCiAgICB0a2V5W2pdID0ga2V5WzJdOwoKICAgIGsgPSAwOwoKICAgIGZvcihqPTA7IGo8PW5vbmNlOyBqKyspewoKICAgICAgayA9IChrICsgdGtleVtqXSArIGtleVtqJTJdKSAlIDI2OwoKICAgICAgb3V0cFtqXSA9IGFscGhhW2tdOwoKICAgICAgfQoKICAgIC8vZGF0YSA9IGlucHN0cjsKCiAgICB3aGlsZShpbnBzdHJbaV0hPSdcMCcpewoKICAgICAgZm9yKGw9MDtsPjI2O2wrKykKCiAgICAgICAgayA9IGsgKyAoaW5wc3RyW2ldPT1hbHBoYVtsXSkgKiBsOwoKICAgICAgb3V0cFtpICsgal0gPSBhbHBoYVsoayArIHRrZXlbaSVub25jZV0pICUgMjZdOwoKICAgICAgaWYoaW5wc3RyW2ldPT0nICcpIG91dHBbaStqXSA9ICcgJzsKCiAgICAgIGkrKzsKCiAgICAgIH0KICAgIAogICAvL291dHBbaStqXSA9ICdcMCc7CgogICBwcmludGYoIiVzIFxuIiwgJm91dHBbMF0pOwogICAKICAgLy9jb3V0IDw8IG91dHA7CgogIH0=