Форум » Обработка целых чисел » Задание 25. №103 ответ не совпадает » Ответить

Задание 25. №103 ответ не совпадает

Василькова: Среди целых чисел, принадлежащих числовому отрезку [351627;428763], найдите числа, которые представляют собой произведение двух различных простых делителей. Запишите в ответе количество таких чисел и их среднее арифметическое. Для среднего арифметического запишите только целую часть числа. Мой ответ: 16200 124967. Где я ошибаюсь? [pre2] var k ,i, p,r,d,col,y, sum: integer; var s: array[1..10] of integer; function prost(x: integer): boolean; var j: integer; flag: boolean; begin k:=0; for j:=1 to x do if x mod j = 0 then k:=k+1; if k=2 then flag:=true else flag:=false; prost:=flag; end; begin sum:=0; for d:= 351627 to 428763 do begin y:=0; for i:=2 to d-1 do if (d mod i = 0) and prost (i) then begin y:=y+1; s[ y]:=i; end; for p:=1 to y-1 do for r :=p+1 to y do if s[ p]*s[ r]=d then begin col:=col+1; sum:=sum+d ; end; end; writeln(col, ' ', sum div col); end.[/pre2]

Ответов - 9

Михаил Титаренко: Думаю, проблема в том, что не хватает типа integer, чтобы записать среднее этих чисел. Попробуйте сделать его longint.

Поляков: Василькова пишет: Где я ошибаюсь? Я, честно сказать, не понял ваш алгоритм. Почти наверняка проблема в том, что сумма стала очень большой и вышла за пределы 4 байтов. Сумму нужно (в PascalABC.NET) объявить с типом int64. Другой вариант - вести среднее через цикл как вещественное число по рекурсивной формуле, тогда сумму считать не нужно: [pre2]sred = (sred*(col-1) + d) /col;[/pre2]Вот вариант решения, он работает очень быстро: [pre2] var i, d, col: integer; sred: double; function prost(x: integer): boolean; var j: integer; flag: boolean; begin flag := true; for j:=2 to round(sqrt(x)) do if x mod j = 0 then begin flag := false; break; end; prost:=flag; end; begin sred := 0; for d:= 351627 to 428763 do for i:=2 to round(sqrt(d)) do if (d mod i = 0) and prost (i) then begin if (i <> d div i) and prost(d div i) then begin col := col + 1; sred := (sred*(col-1) + d) / col; break; end; end; writeln(col, ' ', floor(sred)); end. [/pre2]

Alex61: Хм... всего-то дел... [pre2] ## uses School; var ЧислоГодится: integer -> boolean := Число -> begin var ВсеДелители := Число.Divizors; Result := (ВсеДелители.Count = 4) and ВсеДелители[1].IsPrime and ВсеДелители[2].IsPrime end; var Отобрано := Range(351627, 428763).Where(Число -> ЧислоГодится(Число)).ToArray; Print(Отобрано.Count, Trunc(Отобрано.Average)) // Результат 16200 390088 [/pre2]


Поляков: Alex61 пишет: Хм... всего-то дел... Уберите все готовые функции, которые написаны не вами, и модуль school. И будет то же самое.

Alex61: "И на старуху бывает проруха" (с) Во-первых, я же Вам не предлагаю писать на Питоне программы, убрав "библиотеки, написанные не Вами", несмотря на то, что Вы цитируете Канта )) А во вторых, библиотеку School написал именно я. Для того, чтобы ей пользовались все желающие. P.S. Поздравляю с новоязом - обращаясь к незнакомым людям писать "Вы" со строчной буквы, - но извините заранее: воспитание не позволяет это принять, поэтому пишу с прописной.

Поляков: С точки зрения формальной сдачи ЕГЭ библиотека school полезна. С точки зрения обучения - сомневаюсь. Было бы логично на время экзамена вырезать её. Но это мои личные взгляды, я их никому не навязываю. P.S. Флейм с переходом на личности заканчиваем. Про правила употребления "Вы" и "вы" можно посмотреть, например, на сайте gramota.ru.

Alex61: Куда логичнее было бы строить задания экзаменационные нешаблонно. Давайте вообще на время экзаменов вырезать все библиотеки, выходящие за пределы реализации примитивного ввода/вывода. ЕГЭ - он по сути своей формален, так что говорить о неформальном подходе не приходится. Ну а Ваше личное мнение я понимаю так: надо вообще все уничтожить, что мешает продвигать Пайтон и всячески показывать его достоинства, скрывая недостатки. Но это уже предмет, лежащий в иной плоскости. Что до ресурса gramota.ru, там однозначно указано, что "Вы" или "вы" в современном русском языке пишут в зависимости от желания указать степень уважения пишущего. Мое мнение - "вы" годится для более короткой дистанции. Врт цитата с упомянутого Вами ресурса: вы, вас, вам, вaми, о вас и (как выражение уважения к адресату речи – одному лицу) Вы, Вас, Вам, Вaми, о Вас; ваш, вaше, вaшего, вaша, вaшей, мн. вaши, вaших и (как выражение уважения к адресату речи – одному лицу) Ваш, Вaше, Вaшего, Вaша, Вaшей, мн. Вaши, Вaших (Русский орфографический словарь РАН / Под ред. В. В. Лопатина, О. Е. Ивановой. – 4-е изд., испр. и доп. – М., 2012. С. 70. С. 106). Так что флейм заканчиваю на том, что Ваша же ссылка еще раз убедила меня в своей правоте.

Поляков: Alex61 пишет: Давайте вообще на время экзаменов вырезать все библиотеки, выходящие за пределы реализации примитивного ввода/вывода. Все дело в том, что когда учитель (или экзаменатор) дает задание найти, например, все делители числа или перевести число в систему с основанием 6, целью этого задания НЕ является нахождение всех делителей числа или перевод в другую систему.а Ваше личное мнение я понимаю так: надо вообще все уничтожить, что мешает продвигать Пайтон и всячески показывать его достоинства, скрывая недостатки. Заметьте, что это вы сами додумали.Ваша же ссылка еще раз убедила меня в своей правоте.Прочитайте, пожалуйста, там же "Вопросы Справочному бюро".

Alex61: Alex61 пишет: Все дело в том, что когда учитель (или экзаменатор) дает задание найти, например, все делители числа или перевести число в систему с основанием 6, целью этого задания НЕ является нахождение всех делителей числа или перевод в другую систему. Вы ведь это пошутили, верно? Поиск всех делителей числа на самом деле не ставит задачи найти все делители числа, а перевод числа в некоторую систему счисления не ставит задачи такого перевода? Это театр абсурда просто. Если Вы хотели сказать, что учителя/преподавателя интересует алгоритм перевода, то причем тут составление программы? А если мы пишем программу, то как может быть, что ее результат не нужен? Написание ради процесса написания? "Фигня - война, а главное маневры" ? И потом, стало быть, в случае сортировки мы можем пользоваться библиотекой и радостно восклицать, как это делают на стримах некоторые забавные приверженцы Пайтона, "... вот! У нас готовая сортировка, а в разных там паскалях такого нет!". Т.е. тут библиотечная сортировка вместо рукописной пузырьковой, вставками или иной Вас не смущает, потому что это Пайтон. А если на занятии учитель хочет увидеть алгоритм, ему никто не мешает потребовать, чтобы библиотек не подключали - и все дела.



полная версия страницы