На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 1
ссылка на сообщение  Отправлено: 07.04.22 04:13. Заголовок: Задание 17 № 4319: возможная неоднозначность формулировки


Ссылка на задание: https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=4319
Ссылка на скачивание входного файла: https://kpolyakov.spb.ru/cms/files/ege-seq/17-4.txt
Входной файл: "17-4.txt", размер: 12000 байт, SHA256: 10D70F8AB1A67FEA15CDE3DB6EE19BAFB5223A4CB869F1C86A27E22F43C641A7
Ответ в задании: 531, 10774

У меня получается другой ответ: 426, 10789.

Мой код на Python:
 
# считываем числа из файла в список, преобразуем строковые представления чисел в числа
f = open('17-4.txt')
d = f.readlines()
f.close()
l = len(d)
print('l=', l)
for j in range(l): d[j] = int(d[j])

nCount = 0 # обнуляем счетчик найденных чисел с ровно 2-мя делителями из (2, 3, 5, 7)
nMin = '' # переменная для нахождения минимального значения из найденных чисел
nMax = '' # переменная для нахождения максимального значения из найденных чисел
for j in range(l):
n = d[j]
divCount = 0 # обнуляем счетчик делимости числа n = d[j] на (2, 3, 5, 7)
# цикл с условием выхода при неделимости n на (2, 3, 5, 7)
while(n % 2 == 0) or (n % 3 == 0) or (n % 5 == 0) or (n % 7 == 0):
divCount += 1 # если пройдено условие цикла, то n делится на (2, 3, 5, 7), увеличиваем счетчик
if(divCount > 2): break # если n делится более 2 раз, то далее нет смысла в проверке, выходим из цикла

# делим n на соотвествующий делитель через else if, чтобы не посчитать один и тот же делитель более одного раза
if(n % 2 == 0): n = n // 2
elif(n % 3 == 0): n = n // 3
elif(n % 5 == 0): n = n // 5
elif(n % 7 == 0): n = n // 7

if(divCount == 2): # если d[j] делится на (2, 3, 5, 7) ровно 2 раза, то ...
nCount += 1 # увеличиваем счетчик найденных чисел на 1

# если найденное число d[j] меньше минимального, то делаем d[j] минимальным
if(nMin == ''): nMin = d[j]
elif(nMin > d[j]): nMin = d[j]

# если найденное число d[j] больше максимального, то делаем d[j] максимальным
if(nMax == ''): nMax = d[j]
elif(nMax < d[j]): nMax = d[j]

# выводим количество найденных чисел и сумму минимального и максимального из найденных чисел
print('nCount=', nCount, 'nMin+nMax=', nMin+nMax)

Помогите определить, ошибка в ответе на странице задания или у меня в коде? Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]







Сообщение: 580
ссылка на сообщение  Отправлено: 07.04.22 16:39. Заголовок: Представим что число..


Представим что число делится на 8. Тогда делимость на 2 посчитается трижды.

Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2
ссылка на сообщение  Отправлено: 08.04.22 03:47. Заголовок: cabanov.alexey пишет..


cabanov.alexey пишет:

 цитата:
Представим что число делится на 8. Тогда делимость на 2 посчитается трижды.


Действительно, если условием задачи предполагается, что каждый из элементов списка (2, 3, 5, 7) нужно учитывать в качестве делителя не более одного раза, то ответ на странице задания совпадает с полученным мной.

Но, по-моему, в этом случае формулировка задания допускает неоднозначность.

Основная теорема арифметики говорит нам: «Любое целое число больше 1 может быть разложено в произведение простых чисел, и это разложение единственное с точностью до порядка множителей.» Т.е. любое n из N, n<>1, представимо в виде n = P1*P2*…*Pk, где k из N, Pi – простое число для любого i из N. Так как для любого Pi выполняется равенство q = n/Pi, где q из N, то любое Pi – делитель числа n.

Другое дело, что Pi может быть равным Pj для i<>j, и решение о том, являются ли Pi и Pj одним и тем же делителем числа n, так как их значения равны, либо разными делителями, так как оба входят в разложение числа n на множители – это вопрос терминологии. Например, я посчитал их разными делителями.

Думаю, что имеет смысл дополнить формулировку задания, например, так: «… Рассматривается множество элементов последовательности, у которых ровно два из его не равных друг другу делителей входят в список (2, 3, 5, 7). …».

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 160
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет