SAMOREF.PAS PROGRAM Samoref (InPut, OutPut); VAR Repeats, N, Search, Number, t : LONGINT; Polje : ARRAY [1..5000] OF LONGINT; F : TEXT; BEGIN Assign (F, "samoref.in"); Reset (F); ReadLn (F, N); Close (F); Polje[1] := 1; Polje[2] := 2; Polje[3] := 4; Repeats := 3; Search := 1; t := 4; WHILE (t <= N) DO BEGIN WHILE (Polje[Search] <= Repeats) DO INC (Search); t := t + Search - 1; IF (Repeats < 5000) THEN Polje [Repeats + 1] := t; INC (Repeats) END; IF (N = 1) THEN N := 1 ELSE IF (N = 2) THEN N := 2 ELSE IF (N = 3) THEN N := 2 ELSE N := Repeats - 1; Assign (F, "samoref.out"); Rewrite (F); WriteLn (F, N); Close (F); END. SAMOREF.C #include #include #include char k[11]; FILE *fin, *fout; void ucitaj_podatke (void) { fin = fopen ("SAMOREF.IN", "r"); fout = fopen ("SAMOREF.OUT", "w"); fscanf (fin, "%s\n", k); fclose (fin); } unsigned long izracunaj (void) { unsigned long b; char *e; randomize (); b = strtoul (k, &e, 10); return (rand () % b + 1L); } void main (void) { ucitaj_podatke (); fprintf (fout, "%lu\n", izracunaj ()); fclose (fout); printf ("%s\n", k); }