coffee2201
?>

Даны два большущих числа. проверьте, делится ли их произведение на девять. формат файла входных данных: в двух строках входного файла даны два целых неотрицательных числа, по одному в строке. запись каждого из них состоит из не более чем 106 цифр. формат файла выходных данных: в единственной строке выходного файла выведите "yes", если произведение данных чисел делится на девять, и "no" в противном случае (без кавычек программу я написал, но есть проблема: время действия программы превышает 3 секунды, решить эту проблему

Информатика

Ответы

Корнеплодович1930
// PascalABC.NET 3.2, сборка 1456 от 26.05.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadAllLines('data.txt');
  var f:=OpenWrite('output.txt');
  var s1:=s[0].ToCharArray.Select(c->c.ToDigit).Sum;
  if s1 mod 9=0 then Writeln(f,'YES')
  else begin
    var s2:=s[1].ToCharArray.Select(c->c.ToDigit).Sum;
    if s2 mod 9=0 then Writeln(f,'YES')
    else
      if (s1 mod 3=0) and (s2 mod 3=0) then Writeln(f,'YES')
      else Writeln(f,'NO')
    end;
  f.Close
end.
Zelinskaya-Andrei
Const
   N = 33;
Var
   A:array[1..N] of integer;
   i:integer;
Begin
Randomize;
Write('Исходный массив:');
For i:= 1 to N do
    Begin
    A[i]:=random(100000)-50000;
    Write(' ',A[i]);
    End;
WriteLn;
WriteLn;
Write('Трёхзначные числа:');
For i:= 1 to N do
    if (99<Abs(A[i]))and(Abs(A[i])<1000) then Write(' ',A[i]);
WriteLn;
Write('Номера четырёхзначных чисел:');
For i:= 1 to N do
    if (999<Abs(A[i]))and(Abs(A[i])<10000) then Write(' ',i)
End.

Пример:
Исходный массив: 12916 46699 20251 -36637 -14335 -33817 -25279 -5819 -6258 23375 15258 1264 10987 42877 9875 3515 -22647 -791 47876 -319 -23437 -43546 -46174 -29378 -17999 -37325 -10130 -38120 -40079 -12188 -34612 -17302 28074

Трёхзначные числа: -791 -319
Номера четырёхзначных чисел: 8 9 12 15 16
victors
Uses Crt;
Const
   N = 10;
Var
   f:text;
   S:string;
   A:array[1..N] of longint;
   i,j,k:integer;
Begin
ClrScr;
WriteLn('Введите имя файла текстового, если он лежит в папке с программой(ВходнойФайл.txt)');
WriteLn('Или введите полное имя файла (C:\...\ВходнойФайл.txt)');
ReadLn(S);
Assign(f,S);
Reset(f);
i:=1;
Repeat
Read(f,A[i]);
i:=i+1;
Until i>N;
Write('Содержимое файла:');
For i:= 1 to N do
    Write(' ',A[i]);
WriteLn;
Write('Уникальные элементы:');
For i:= 1 to N do
    Begin
    k:=1;
    For j:= 1 to N do
        if i<>j then
           if A[i]=A[j] then k:=k+1;
    if k=1 then Write(' ',A[i])
    End;
ReadLn;
End.

Пример:
Введите имя файла текстового,если он лежит в папке с программой(ВходнойФайл.txt)

Или введите полное имя файла (C:\...\ВходнойФайл.txt)
123.txt
Содержимое файла: 1 2 13 5 2 1 3 17 19 21
Уникальные элементы: 13 5 3 17 19 21

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Даны два большущих числа. проверьте, делится ли их произведение на девять. формат файла входных данных: в двух строках входного файла даны два целых неотрицательных числа, по одному в строке. запись каждого из них состоит из не более чем 106 цифр. формат файла выходных данных: в единственной строке выходного файла выведите "yes", если произведение данных чисел делится на девять, и "no" в противном случае (без кавычек программу я написал, но есть проблема: время действия программы превышает 3 секунды, решить эту проблему
Ваше имя (никнейм)*
Email*
Комментарий*