Даны целые числа a,b,n требуется найти количество целых чисел x таких что 0< =x< =n и число a*x при делении на n дает остаток b паскаль скоро олимпиада а я начал почти с нуля ни могу понять как решить
program n_1: var i,a,b,n,s:integer; begin s:=0; readln(a); readln(b); readln(n); for i:=0 to n do begin if ((a*i) mod n) = b then s:=s+1 end; writeln(s); end.
begin var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println; var (imin,imax):=(a.IndexMin,a.IndexMax); Writeln('Индекс минимального элемента- ',imin,', максимального- ',imax); Writeln('Максимум и минимум равны ',a[imax],', ',a[imin]) end.
Пример n= 20 45 5 -3 16 -37 24 -2 2 49 25 0 -37 17 26 -38 7 -11 21 3 -7 Индекс минимального элемента- 14, максимального- 8 Максимум и минимум равны 49, -38
Начиная с данной сборки PascalABC.NET вывод можно оформлять и так:
begin var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println; var (imin,imax):=(a.IndexMin,a.IndexMax); Writeln($'Min a[{imin}]={a[imin]}, max a[{imax}]={a[imax]}') end.
Пример n= 20 40 -13 -7 7 45 -28 3 -40 37 45 10 47 -38 -39 25 -46 45 -44 42 44 Min a[15]=-46, max a[11]=47
Заметим, что числа образуют арифметическую прогрессию, а её сумма известна: Поэтому два варианта программы: один вычисляет сумму накоплением, второй сразу определяет результат по формуле. Хороший пример того, что программист должен знать математику.
var n, i, s: integer;
begin Write('Введите натуральное число: '); Readln(n); if (n mod 2) = 0 then begin s := 0; for i := 1 to n do s := s + i; Writeln('Сумма чисел от 1 до ', n, ' равна ', s) end else Writeln('Введено нечетное число') end.
Тестовое решение:
Введите натуральное число: 8 Сумма чисел от 1 до 8 равна 36
var n, s: integer;
begin Write('Введите натуральное число: '); Readln(n); if (n mod 2) = 0 then Writeln('Сумма чисел от 1 до ', n, ' равна ', ((1 + n) * n) div 2) else Writeln('Введено нечетное число') end.
Тестовое решение:
Введите натуральное число: 8 Сумма чисел от 1 до 8 равна 36
program n_1:
var i,a,b,n,s:integer;
begin
s:=0;
readln(a);
readln(b);
readln(n);
for i:=0 to n do
begin
if ((a*i) mod n) = b then s:=s+1
end;
writeln(s);
end.
вроде должно работать