#include int main() { const unsigned MAX_LENGTH = 128; char num[MAX_LENGTH]; std::cin.getline(num, MAX_LENGTH); const char* digit = num + 2; unsigned long number = 0; while (*digit != '\0') { // Когато разглеждахме операции с цифри (добавяне/премахване на цифра от число), // тогава говорехме как с деление на 10 премаваме цифра и с умножение на 10 я // добавяме в десния край на числото. // // Това работи, защото цифрите ни са в десетична бройна система. Ако работехме // например с двоична, тогава щяхме да делим и умножаваме с 2, за да махаме/добавяме // "цифри" в края на числото (да се има впредвид, че резултата ще е в 10тична бройна // система). // // Аналогично, понеже работим с 16тична, правим операции с числото 16. if ('0' <= *digit && *digit <= '9') { number = number * 16 + (*digit - '0'); } // А e 10, B е 11, ..., F е 15 else if ('A' <= *digit && *digit <= 'F') { number = number * 16 + (*digit - 'A' + 10); } ++digit; } std::cout << number << std::endl; return 0; }