Попросили тут задачу по информатике решить — написать программу, которая для заданного номера билетика вычисляет сколько осталось до следующего «счастливого» билетика. Ну все в курсе наверно — номера билетов обычно шестизначные, и «счастливым» считается тот, у которого сумма первых трех цифр равняется сумме последних трех цифр. Что коду пропадать, вдруг кому понадобится — решил сразу сделать калькулятор.
Если бы просили просто напечатать все номера счастливых билетов — было бы очень просто — шесть вложенных циклов, ну а здесь пришлось немного заморочиться для вытаскивания цифры с указанной позиции в билете.
Формула примерно такая:
где
n — число,
p — позиция цифры в числе (1 — самая крайняя правая)
d — искомая цифра
% — операция получения остатка от целочисленного деления (взятие по модулю), например, 151 % 100 = 51.
Таким образом, для извлечения цифры 5 с третьей позиции из числа 100500 будет такой расчет:
Разбор задачи Счастливый билет acmp 52
Ну а на javascript это будет как-то так:
function extractNumberFromPosition(n, p) < return (n%Math.pow(10,p) — i%Math.pow(10,p-1))/Math.pow(10,p-1); >
Источник: planetcalc.ru
задача с счастливыми билетами
Всем привет, попалась задача на курсе по Python про счастливый билет. То есть программа должна проверять сумму первых трех цифр и последних трех цифр в числе. Я более менее сделал все, но! Если первой цифрой является 0, то последняя 4 становится 3. С другими цифрами такого не происходит. Узнал это из того, что выводил каждую цифру числа на экран. Вот мой код:
a = int(input()) a1 = int(a/100000) a2 = int((float(a/100000) — a1)* 10) a3 = int((float(a/10000) — int(a/10000))*10) a4 = int((float(a/1000) — int(a/1000))*10) a5 = int((float(a/100) — int(a/100))*10) a6 = int((float(a/10) — int(a/10))*10)код if (a1 + a2 + a3) == (a4 + a5 + a6): print(‘Счастливый’) else: print(‘Обычный’)
Вот код, как я узнал о проблеме:
a = int(input()) a1 = int(a/100000) a2 = int((float(a/100000) — a1)* 10) a3 = int((float(a/10000) — int(a/10000))*10) a4 = int((float(a/1000) — int(a/1000))*10) a5 = int((float(a/100) — int(a/100))*10) a6 = int((float(a/10) — int(a/10))*10) print(a1) print(a2) print(a3) print(a4) print(a5) print(a6)
Источник: ru.stackoverflow.com
Задача 5. Счастливый билетик (Python)
В старину, когда даже в столице билеты в общественном транспорте выдавали контролёры, существовало поверье: если на билете сумма первых трёх цифр в номере билета равна сумме последних трёх, то это к удаче.
Напишите программу, которая получала бы на входе шестизначный номер билета и выводила, счастливый это билет или нет. К примеру, билеты 666 666 и 252 135 — счастливые, а 123 456 — нет.
Как работают «счастливые билетики»? Математический лайфхак Вольфсона на QWERTY
Решение задачи:
a = int(input(‘Введите номер билета: ‘)) sum_left = 0 sum_right = 0 for i in range(6): if i < 3: sum_right += a // 10**i % 10 else: sum_left += a // 10**i % 10 if sum_left == sum_right: print(‘lucky’) else: print(‘unlucky’)
Источник: it-systems.su