Advertisement
Guest User

Untitled

a guest
Mar 16th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.07 KB | None | 0 0
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8.   System.SysUtils;
  9.  
  10. type
  11.    TСharacteristic = array [0..3] of Integer;
  12.    TDinamicArr = array of Integer;
  13.  
  14. function FindNumber(NumberDescription: TСharacteristic): TСharacteristic;
  15. var
  16.    index, CurrA: integer;
  17.    FinalNumber:DinamicArrTСharacteristic;
  18. begin
  19.    CurrA := NumberDescription[0] mod NumberDescription[2];
  20.    SetLength(FinalNumber, NumberDescription[3]);
  21.    FinalNumber[0] := CurrA;
  22.    for index := 1 to NumberDescription[3] do
  23.    begin
  24.       CurrA := (CurrA - NumberDescription[1]) mod NumberDescription[2];
  25.       FinalNumber[index] := CurrA;
  26.    end;
  27. end;
  28.  
  29. procedure PrintNumber(Number: TDinamicArr);
  30. var
  31.    index, sum: integer;
  32.    DinamicArr: TDinamicArr;
  33. begin
  34.    if Length(Number) < 2 then
  35.       for index := High(Number) downto 0 do
  36.          Write(Number[index])
  37.    else
  38.    begin
  39.       Sum := 0;
  40.       for index := High(Number) downto 0 do
  41.          Sum := Sum + Number[index];
  42.       if Sum < 10 then
  43.       begin
  44.          SetLength(DinamicArr, 1);
  45.          DinamicArr[0] := Sum;
  46.       end
  47.       else
  48.          if Sum < 100 then
  49.          begin
  50.             DinamicArr[1] := Sum mod 10;
  51.             DinamicArr[0] := Sum div 10;
  52.          end;
  53.       PrintNumber(DinamicArr);
  54.    end;
  55. end;
  56.  
  57. var
  58.    AmountRep, index: integer;
  59.    NumbersDescription: array of TСharacteristic;            // a = (ai - b) mod m
  60.    CurrentNumber:  TDinamicArr;                             // 0 -> a
  61. begin                                                       // 1 -> b
  62.    Readln(AmountRep);                                       // 2 -> m
  63.    SetLength(NumbersDescription, AmountRep);                // 3 -> k
  64.    for index := 1 to AmountRep do
  65.    begin
  66.       Read(NumbersDescription[index][0]);
  67.       Read(NumbersDescription[index][1]);
  68.       Read(NumbersDescription[index][2]);
  69.       Readln(NumbersDescription[index][3]);
  70.    end;
  71.    for index := 1 to AmountRep do
  72.    begin
  73.       CurrentNumber := FindNumber(NumbersDescription[index]);
  74.       PrintNumber(CurrentNumber);
  75.    end;
  76.    Readln;
  77. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement