Не пойму почему решение прошло валидацию?
Сначала пробовал получить каждую цифру через остаток от деления r=ch%stepen но результат при каждом прогоне был диаметрально противоположным : вместо 8 затем 9 и т.д. согласно введенному числу(89756) результат был :
1) 9756
2)756
и тд.
применил обычное деление на 10 в степени длинны числа минус 1 .
но ведь если разделить число на степень то результат в цикле будет:
1) 8
2) 89
3) 897
и это не должно было привести к корректному решению но по чему то решение прошло......
И вот два вопроса:
1. Как можно было правильно решить данную задачу с использованием остатка от деления?
2. По чему мое решение прошло. при прогоне результата на ручном калькуляторе действительно условия четности совпадают. Это какая то математичиская фича?
String n = Integer.toString(ch);
dlinna = n.length();
for (int i = 0; i<n.length(); i++) {
// System.out.println(dlinna);
dlinna--;
stepen = (int)Math.pow(10,dlinna);
r=ch/stepen;
// System.out.println(r);
if (r%2==0){
even++;
}
else{
odd++;
}
}
Александр
14 уровень
Почему задача прошла Валидацию?
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр Backend Developer
21 декабря 2019, 14:34
Так , спасибо! С этим понятно.
А есть способ достать каждую цифру из числа по очереди ? Условие использования такой последовательности может быть ведь разным.
Ну наверняка есть такой способ с применением массива, но пока до этого еще не дошел.
Интересен какой ни будь другой вариант!
+1
АлександрExpert
21 декабря 2019, 15:32полезный
+1
Александр Backend Developer
21 декабря 2019, 15:37
Ааа , да точно) это уже встречалось.
Спасибо еще раз!!!
0
АлександрExpert
21 декабря 2019, 14:17полезный
при проверке числа на четность важна лишь его последняя цифра. соответственно
8%2 = 0 - цифра 8 четная
89%2 = 1 - цифра 9 нечетная
897%2 = 1 - цифра 7 нечетная
и т.д.
можно было идти от обратного
проверять на четность число, а потом делить его на 10.
так ты бы отбрасывал каждый раз младшую цифру и анализировал бы следующую.
+1