Задания
Версия для печати и копирования в MS Word
Тип Д17 № 33762
i

Назовём на­ту­раль­ное число под­хо­дя­щим, если у него боль­ше 17 раз­лич­ных де­ли­те­лей (вклю­чая еди­ни­цу и само число). Опре­де­ли­те ко­ли­че­ство под­хо­дя­щих чисел, при­над­ле­жа­щих от­рез­ку [30 001; 70 000], а также наи­мень­шее из таких чисел. В от­ве­те за­пи­ши­те два целых числа: сна­ча­ла ко­ли­че­ство, затем наи­мень­шее число.

Спрятать решение

Ре­ше­ние.

Решим за­да­чу пе­ре­бо­ром. При­ведём ре­ше­ние дан­ной за­да­чи на языке Пас­каль:

var del, count, min, i, j: longint;

begin

count := 0;

del := 0;

min := 50001;

for i := 30001 to 70000 do begin

for j := 1 to i do begin

if i mod j = 0 then del := del + 1;

end;

if del > 17 then begin

count := count + 1;

if min > i then min := i;

end;

del := 0;

end;

writeln(count, min);

end.

Ре­зуль­тат ра­бо­ты про­грам­мы  — 706630008.

 

За­ме­тим, что время ра­бо­ты про­грам­мы можно су­ще­ствен­но умень­шить, если осу­ществ­лять пе­ре­бор де­ли­те­лей не до са­мо­го числа, а до квад­рат­но­го корня из числа. Тогда, если число i де­лит­ся на число j, то к ко­ли­че­ству де­ли­те­лей del надо при­бав­лять 2: для де­ли­те­ля j и де­ли­те­ля i/j. Кроме того, если число j яв­ля­ет­ся квад­рат­ным кор­нем из числа i, то де­ли­те­ли j и i/j сов­па­да­ют, по­это­му ко­ли­че­ство де­ли­те­лей del надо умень­шить на еди­ни­цу. При­во­дим про­грам­му на языке Pascal, ре­а­ли­зу­ю­щую этот спо­соб:

var del, count, min, i, j, sqrtI: longint;

begin

count := 0;

min := 50001;

for i := 30001 to 70000 do begin

del := 0;

sqrtI := round(sqrt(I));

for j := 1 to sqrtI do begin

if i mod j = 0 then del := del + 2;

end;

if sqrtI*sqrtI = i then del := del - 1;

if del > 17 then begin

count := count + 1;

if min > i then min := i;

end;

end;

writeln(count, min);

end.

Ре­зуль­тат ра­бо­ты про­грам­мы  — 706630008.

 

Ответ: 706630008.

Раздел кодификатора ФИПИ: 1.7.2 Ос­нов­ные кон­струк­ции языка про­грам­ми­ро­ва­ния. Си­сте­ма про­грам­ми­ро­ва­ния