Число минут когда часовая и минутная стрелки совпадут - C (СИ)
Формулировка задачи:
Помогите найти ошибку/причину в коде (условия задачи ниже), не проходят 2 теста (скрин во вложении)
На вход программе подаются два целых числа, указывающие момент времени "n часов m минут". Определите наименьшее число полных минут, которое должно пройти до того момента, когда часовая и минутная стрелки ни циферблате совпадут, не обязательно на каком-то делении. Вещественную арифметику не использовать.
Примеры
Входные данные 2 50
Выходные данные 26
Входные данные 3 0
Выходные данные 16
#include <stdio.h> #define hour 60 #define circle 720 int main(int argc, char *argv[]) { int h; int m; scanf("%d",&h); scanf("%d",&m); int t = 60 * (h % 12) + m % 60; int x = (m==h*5) ? 0:(circle*((t/(circle/11))+1)/11 - t); printf("%d\n", x); return 0; }
Решение задачи: «Число минут когда часовая и минутная стрелки совпадут»
textual
Листинг программы
int dm=(60*h+m)/12-m<0?60:0; printf("%d\n",(60*h-11*m+12*dm)/11);
Объяснение кода листинга программы
- Переменная
h
содержит количество часов, прошедших с начала суток (от 0 до 23). - Переменная
m
содержит количество минут, прошедших с начала суток (от 0 до 59). - Переменная
dm
используется для хранения остатка от деления (60h+m)/12 на 11. Присваивается значение (60h-11m+12dm)/11. - Вывод на экран значения переменной
dm
. - Значение переменной
dm
вычисляется следующим образом: (60*h+m)/12-m<0?60:0. - В знаменателе 12, т.к. в одном часе 12 заведений по 60 минут.
- Значение переменной
dm
сдвигается на 60, если результат (60*h+m)/12-m отрицательный. - Результат (60*h+m)/12-m делится на 11.
- Если результат (60*h+m)/12-m отрицательный, то к нему добавляется 60.
- Результат (60*h+m)/12-m выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д