for i := 1 to n do begin num := i; c := 0; for j := 1 to symbols_count do if num >= symbols[j] then begin c := c + num div symbols[j]; num := num mod symbols[j]; end;
if c = m then begin {writeln(i);} res := res + 1; end; end;
С процедурами и функциями (высосано из пальца, ибо не нужно) // PascalABC.NET 3.2, сборка 1400 от 13.03.2017 // Внимание! Если программа не работает, обновите версию!
function ArrMin(a:array of integer):=a.Min;
procedure NewSequence(a:array of integer; del:integer; var s:sequence of integer); begin s:=a.Where(x->x<>del) end;
begin var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println; var b:sequence of integer; NewSequence(a,ArrMin(a),b); b.Println end.
Для N = 3500 и М = 5 будет выбрано 216 чисел
const
symbols_count = 7;
symbols: array[1..symbols_count] of integer = (1000, 500, 100, 50, 10, 5, 1);
var
num, n, m, c, i, j, res: integer;
begin
readln(n, m);
for i := 1 to n do
begin
num := i;
c := 0;
for j := 1 to symbols_count do
if num >= symbols[j] then
begin
c := c + num div symbols[j];
num := num mod symbols[j];
end;
if c = m then begin
{writeln(i);}
res := res + 1;
end;
end;
writeln(res);
end.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;
var m:=a.Min;
var b:=a.Where(x->x<>m); b.Println;
end.
Пример
n= 30
-3 6 -2 5 -1 -10 3 9 8 5 2 9 4 -10 8 10 6 9 -8 4 -7 2 10 -7 -7 -5 1 2 0 -3
-3 6 -2 5 -1 3 9 8 5 2 9 4 8 10 6 9 -8 4 -7 2 10 -7 -7 -5 1 2 0 -3
С процедурами и функциями (высосано из пальца, ибо не нужно)
// PascalABC.NET 3.2, сборка 1400 от 13.03.2017
// Внимание! Если программа не работает, обновите версию!
function ArrMin(a:array of integer):=a.Min;
procedure NewSequence(a:array of integer; del:integer; var s:sequence of integer);
begin
s:=a.Where(x->x<>del)
end;
begin
var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;
var b:sequence of integer;
NewSequence(a,ArrMin(a),b);
b.Println
end.