• ИВТ 99 БАЛЛОВ!!!!

    Напишите программу в паскале

    Даны два БоЛьШуЩиХ ЧиСЛа. Проверьте, делится ли их произведение на девять.

    Формат файла входных данных:
    В двух строках входного файла даны два целых неотрицательных числа, по одному в строке. Запись каждого из них состоит из не более чем 106 цифр.

    Формат файла выходных данных:
    В единственной строке выходного файла выведите "YES", если произведение данных чисел делится на девять, и "NO" в противном случае (без кавычек).

    Пример:
    72
    840

    YES

    3
    5

    NO

    Ограничение по времени : 3 сек
    Ограничение по памяти : 256 Мб

    Обычная программа по типу перемножить числа и проверить, кратно ли произведение 9 НЕ ПОДХОДИТ
    Пожалуйста, учитывайте ограничения по времени и памяти

Ответы 1

  • Вычислим остатки от деления обоих чисел на 9, для этого заметив, что у числа 10a + c такой же остаток, что и у a + c. Тогда можно, считывая цифру за цифрой, получить остаток для всего числа. Дальше проверяем, чем равно произведение остатков: если делится на 9, то произведение делится на 9, иначе не делится.function mod9(f: text): integer;var  c: char;  rem: integer;begin  rem := 0;  while not eoln(f) do  begin    read(f, c);    rem := (rem + ord(c) - ord('0')) mod 9;  end;  readln(f);  mod9 := rem;end; var  f: text;  a: integer; begin  assign(f, 'input.txt');  reset(f);  a := mod9(f) * mod9(f);  close(f);  assign(f, 'output.txt');  rewrite(f);  writeln(f, a);  if a mod 9 = 0 then    write(f, 'YES')  else    write(f, 'NO');  close(f);end.
    • Автор:

      ramos97
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years