Здравствуйте, Shmj, Вы писали:
S>Вопрос: определить что вторая слева цифра числа делится на 3.
S>Примеры: 13, 89022 -- делится (3 и 9), 725933 -- не делится (2).
S>Решение должно быть понятным и быстрым.
Как бэ тут обглодали аналогичную тему:
http://stackoverflow.com/questions/701322/how-can-you-get-the-first-digit-in-an-int-c
Самое быстрое и в принципе понятное будет:
if (i >= 100000000) i /= 100000000;
if (i >= 10000) i /= 10000;
if (i >= 100) i /= 100;
if (i >= 10) i /= 10; // тут имеем число из 2 левых цифр
i = i % 10; // тут вторая слева цифра
if (i % 3 == 0) {
// вторая слева цифра числа делится на 3
} else {
// вторая слева цифра числа НЕ делится на 3
}
Решение можно приспособить к int64 и int128 парой сточек кода.