Если вам разрешено использовать функции log / pow, вы близки. Рассмотрим ввод 123:
int log_base10 = log10(number); // returns 2;
int divide_by = pow(10, log_base10 - index - 1); // returns 10 if index == 2;
int answer = (number/divide_by) % 10; // returns 2;
Будьте осторожны с log и pow, потому что вы конвертируете из чисел с плавающей точкой в целые числа.
По сути, вы "обрезаете" самые нижние цифры и затем проверка наименее значимого di git с помощью операции % 10
.
Если вы можете использовать строки, это проще:
auto str = std::to_string(number);
int answer = str[position-1] - '0';