// assuming bit sequence = iterative solution
unsigned short num_at_MSD(const int num_digits, const int num, const int i) {
return int(num / pow(10, num_digits - 1 - i)) % 10;
}
unsigned short num_digits(int num)
{
int div = 1;
int count = 0;
while (div <= num) {
div *= 10;
count++;
}
return count;
}
string num_src_to_encryptd(const int num)
{
string bit_seq = "";
int size = num_digits(num), sum = 0;
if (size <= 1) return to_string(num);
bit_seq += to_string(num_at_MSD(size, num, 0) +
num_at_MSD(size, num, 1));
for (int i = 0; i < size - 2; i++) {
for (int j = 0; j < 3; j++) {
sum += num_at_MSD(size, num, i + j);
}
bit_seq += to_string(sum);
sum = 0;
}
bit_seq += to_string(num_at_MSD(size, num, size - 2) +
num_at_MSD(size, num, size - 1));
return bit_seq;
}
int main()
{
int test0 = 1;
cout << num_src_to_encryptd(test0) << endl;
int test1 = 10;
cout << num_src_to_encryptd(test1) << endl;
int test2 = 1010;
cout << num_src_to_encryptd(test2) << endl;
int test3 = 10101100;
cout << num_src_to_encryptd(test3) << endl;
}