Ссылка на оригинальную статью
Ссылка на Try Haxe!
Ссылка на e-olymp
Задача
К Василию приехали два его друга с отличной новостью: они выиграли в лотерею $n$ рублей. Поскольку лотерейный билет был получен на сдачу во время общей закупки в магазине, то его принадлежность определить не удалось. Было решено разделить выигрыш поровну. Василий хотел бы узнать, можно ли честно разделить выигрыш.
Входные данные
Одно натуральное число $n$, количество знаков которого не превышает 255.
Выходные данные
Вывести «Yes», если входное число делится на 3, и «No», если не делится.
Тесты
Входные данные | Выходные данные |
---|---|
33 | Yes |
0 | Yes |
1 | No |
1234567890987654321 | Yes |
12345678901 | No |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Main { static function main() { var line = Sys.stdin().readLine(); var sum = 0; for (i in 0...line.length) { sum += Std.parseInt(line.charAt(i)); } var message = sum % 3 == 0 ? "Yes" : "No"; Sys.stdout().writeString(message + "\n"); } } |
Решение
Для начала вводим строку, где будет хранится наше число. Будем считать сумму цифр числа, т.к. число делится на 3, если сумма его цифр делится на 3. Для этого создаем переменную $sum$, в которой будет хранится сумма цифр. Запускаем цикл от 0 до размера строки (количество цифр в числе). В цикле суммируем цифры числа, преобразуя каждый символ в Int с помощью функции parseInt. Далее проверяем — если сумма цифр делится по модулю на 3, то выводим «Yes», если нет — то «No».