Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2015, 21:18   #1
isst
Пользователь
 
Регистрация: 02.01.2015
Сообщений: 85
Восклицание В марсианских сутках N часов. У марсиан Ятеп и Ашам есть часы со стрелками

Помогите мне, пожалуйста с решением следующей задачи:

В марсианских сутках N часов. У марсиан Ятеп и Ашам есть часы со стрелками, которые работают почти так же, как земные – большая стрелка делает один оборот в час, а маленькая – один оборот в сутки. Ятеп и Ашам поссорились и решили не разговаривать, пока стрелки часов не совпадут. Определите точный момент времени, когда это случится.

Формат входных данных
Во входном файле задано число тестов K (0 ≤ K<104), далее для каждого теста указаны целые числа N, A, B и C (1<109, 0 ≤ A, 0 ≤ B<109). Числа A, B и C означают, что Ятеп и Ашам поссорились в A+B/C часов.

Формат выходных данных
Для каждого теста выведите искомое время в том же формате: числа A, B и C, такие, что искомое время равно A+B/C (0 ≤ A, 0 ≤ B, дробь B/C – несократимая).
isst вне форума Ответить с цитированием
Старый 04.01.2015, 09:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А вот почитай, может прояснится в голове
http://www.programmersforum.ru/showthread.php?t=167068
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.01.2015, 13:56   #3
isst
Пользователь
 
Регистрация: 02.01.2015
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А вот почитай, может прояснится в голове
http://www.programmersforum.ru/showthread.php?t=167068
Спасибо, щас посмотрю.
isst вне форума Ответить с цитированием
Старый 04.01.2015, 22:23   #4
isst
Пользователь
 
Регистрация: 02.01.2015
Сообщений: 85
Радость

Цитата:
Сообщение от Аватар Посмотреть сообщение
А вот почитай, может прояснится в голове
http://www.programmersforum.ru/showthread.php?t=167068
В общем, я тут подумал, написал вот такой код:
Код:
function NOD(a, b:LongInt):LongInt;
 
var c:LongInt;
 
begin
  while (b <> 0) do
  begin
    c:= a mod b;
    a:= b;
    b:= c;
  end;
  NOD:= a;
end;

var k, n, a, b, c, i:LongInt;
 
procedure outputresult(x, y, h:LongInt);
 
var alpha, betta, gamma, buf, nodik:LongInt;
 
begin
  alpha:=  x div y;
  buf:= x - y * alpha;
  alpha:= (h+alpha) mod N;
  nodik:= NOD(buf, y);
  betta:= buf div nodik;
  gamma:= y div nodik;
  writeln(alpha, ' ', betta, ' ', gamma);
end;
 

begin
  readln(k);
  for i:= 1 to k do
  begin
    readln(n, a, b, c);
    if b*(N-1) < a*c then outputresult(a, n-1, a) 
    else outputresult(a+1, n-1, a+1);
  end;
end.
Только он не на всех тестах срабатывает правильно. Посмотрите, пожалуйста, в чем моя ошибка?
isst вне форума Ответить с цитированием
Старый 06.01.2015, 10:49   #5
isst
Пользователь
 
Регистрация: 02.01.2015
Сообщений: 85
Счастье

Цитата:
Сообщение от isst Посмотреть сообщение
В общем, я тут подумал, написал вот такой код:
Код:
function NOD(a, b:LongInt):LongInt;
 
var c:LongInt;
 
begin
  while (b <> 0) do
  begin
    c:= a mod b;
    a:= b;
    b:= c;
  end;
  NOD:= a;
end;

var k, n, a, b, c, i:LongInt;
 
procedure outputresult(x, y, h:LongInt);
 
var alpha, betta, gamma, buf, nodik:LongInt;
 
begin
  alpha:=  x div y;
  buf:= x - y * alpha;
  alpha:= (h+alpha) mod N;
  nodik:= NOD(buf, y);
  betta:= buf div nodik;
  gamma:= y div nodik;
  writeln(alpha, ' ', betta, ' ', gamma);
end;
 

begin
  readln(k);
  for i:= 1 to k do
  begin
    readln(n, a, b, c);
    if b*(N-1) < a*c then outputresult(a, n-1, a) 
    else outputresult(a+1, n-1, a+1);
  end;
end.
Только он не на всех тестах срабатывает правильно. Посмотрите, пожалуйста, в чем моя ошибка?
Все-все, понял, там LongInt. ->> Int64
isst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать механические часы (с циферблатом и стрелками) Stysha Visual C++ 3 17.08.2012 22:32
Задача, угол между стрелками циферблата часов. studentAn Помощь студентам 1 21.11.2011 03:32
Часы(есть наработки) sllh_111 Помощь студентам 2 19.04.2010 17:04
часы показывают m часов, n минут и k секунд. Каковы будут показатели часов через p часов, q минут и r сек Паскалька^^ Помощь студентам 3 11.10.2009 19:41