Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок - бесплатно!
- 07.05.2016 12:24
- Информатика
- remove_red_eye 13281
- thumb_up 43
Ответы и объяснения 1
//Данный алгоритм использует большое количество системных ресурсов. Например, для 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
- 08.05.2016 05:04
- thumb_up 23
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.