Нужно написать программу на pascal abc

Нужно написать программу на pascal abc
Гость
Ответ(ы) на вопрос:
Гость
//Данный алгоритм использует большое количество системных ресурсов. Например, для 10000 результат вычислялся 2 минуты, ну Вы поняли. Приношу свои извинения. //PascalABC.NET 3.2 сборка 1318 Var   ma:array of string;   arr:array of integer;   n,GroupCount,i,j,CountOfFails,k,mass:integer;   b:boolean;   s:string; begin GroupCount:=1; CountOfFails:=0; b:=true; read(n); setlength(ma,GroupCount); ma[0]:='1,'; for i:=2 to n do begin   for j:=0 to GroupCount-1 do     begin     s:=ma[j];     mass:=0;     while pos(',',s)<>0 do       begin         inc(mass);         setlength(arr,mass);         arr[mass-1]:=strtoint(copy(s,1,pos(',',s)-1));         delete(s,1,pos(',',s));        end;       for k:=0 to mass-1 do          if i mod arr[k]=0 then           begin             b:=false;             inc(CountOfFails);             break;           end;       if b=true then         begin           ma[j]+=inttostr(i)+',';           break;         end;       if (b=false) and (CountOfFails=GroupCount) then          begin           inc(GroupCount);           setlength(ma,GroupCount);           ma[j+1]:=inttostr(i)+',';          end;       b:=true;      end; CountOfFails:=0; b:=true; end; {writeln('End of main cycle reached');  //если хочется посмотреть разбивку
for j:=0 to GroupCount-1 do
writeln('Group #',j+1,':',ma[j]);
writeln('---------------------');} writeln(GroupCount); end. Пример ввода: 10000 Пример вывода: 14
Не нашли ответ?
Ответить на вопрос
Похожие вопросы