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

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

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

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



Сообщение: 8
ссылка на сообщение  Отправлено: 10.05.23 14:39. Заголовок: Линия 15. Задача 6158. ошибка в ответе


(№ 6158) (Д. Статный) Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». На числовой прямой даны три отрезка: P = [257, 356], Q = [5, 600] и R = [59, 228]. Какова минимальная длина отрезка A, при котором формула
((x ∈ R) → (x ∈ A)) ∨ ((ДЕЛ(x, 3) → (x ∈ P)) → ((x ∈ Q) → (x ∈ A)))
тождественно истинна, то есть принимает значение 1 при любом натуральном значении переменной х?
Авторский ответ: 169
Правильный ответ: 168 - Отрезок [59, 227]

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





Не зарегистрирован
ссылка на сообщение  Отправлено: 14.05.23 16:35. Заголовок: № 6158


import sys
sys.setrecursionlimit (10000)
def F(a, b, x):
if a <= x <=b:
return True

mn=10**9
for a in range(800):
for b in range(a, 800):
Rezult=1
for x in range(800):
Rezult*=(not (F(59, 228, x))) or F(a, b, x) or (x%3==0) and (not (F(257, 356, x))) or (not (F(5, 600, x)))

if Rezult:
mn=min(mn, b-a)
print(mn)
ответ 168.
Может где ошибка?

Спасибо: 0 
Цитата Ответить
Администратор




Сообщение: 3957
ссылка на сообщение  Отправлено: 15.05.23 12:30. Заголовок: Max-xaM пишет: Прави..


Max-xaM пишет:
 цитата:
Правильный ответ: 168 - Отрезок [59, 227]

Доказывайте.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
ссылка на сообщение  Отправлено: 15.05.23 13:16. Заголовок: Проверяем отрезок А=..


Х может быть только натуральным числом, никаких нецелых. Иначе формула на делимость не определена.
Проверяем отрезок А= [59,227] программно:
##
var (p,q,r,a):=(257..356, 5..600, 59..228, 59..227);
for var x:=1 to 70000 do
if (
((x in r) <= (x in a)) or ((x.Divs(3) <= (x in p)) <= ((x in q) <= (x in a)))
) = false
then print(x);

Ни один из Х от 1 до 70000 не срабатывает на ложь - везде правда.

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 15.05.23 16:27. Заголовок: №6158


 
def F(a, b, x):
if a <= x <=b:
return True

mn=10**9
for a in range(800):
for b in range(a, 800):
Rezult=1
for x in range(800):
Rezult*=(not (F(59, 228, x))) or F(a, b, x) or (x%3==0) and \
(not (F(257, 356, x))) or (not (F(5, 600, x)))

if Rezult:
mn=min(mn, b-a)
print(mn)


Спасибо: 0 
Цитата Ответить





Сообщение: 476
ссылка на сообщение  Отправлено: 16.05.23 13:20. Заголовок: ENL пишет: def F(a,..


ENL пишет:

 цитата:
def F(a, b, x):   
if a <= x <=b:
return True

mn=10**9
for a in range(800):
for b in range(a, 800):
Rezult=1
for x in range(800):
Rezult*=(not (F(59, 228, x))) or F(a, b, x) or (x%3==0) and \
(not (F(257, 356, x))) or (not (F(5, 600, x)))

if Rezult:
mn=min(mn, b-a)
print(mn)



Спасибо за правильно отформатированный код!

Вот, теперь с вашей программой сможет разобраться любой "жаждущий" форумчанин!

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



Сообщение: 10
ссылка на сообщение  Отправлено: 16.05.23 11:00. Заголовок: Граница отрезка НЕ м..


Граница отрезка НЕ может быть НЕцелым числом - иначе функция НЕ определена.
Об этом даже написано в самой задаче:
"
принимает значение 1 при любом натуральном значении переменной х
"
Нельзя для проверки брать НЕцелые числа Х.
Верный ответ 168
Программа проверки "ЛЮБОГО" Х для отрезка 59-227 написана выше.
Ваш ответ - 168,(9) является числом БОЛЬШЕ, чем 168
Так что МИНИМАЛЬНАЯ длина - 168

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3958
ссылка на сообщение  Отправлено: 16.05.23 11:24. Заголовок: Да, там ответ 168. С..


Да, там ответ 168. Спасибо за обсуждение, ответ исправлен. Число 228 перекрывается условием ДЕЛ(x,3) and not (x in P).

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 473
ссылка на сообщение  Отправлено: 16.05.23 12:53. Заголовок: Поляков пишет: Да, ..


Поляков пишет:

 цитата:
Да, там ответ 168.



 
from itertools import *

def f(x):
p = 257<=x<=356
q = 5<=x<=600
r = 59<=x<=228
a = a1<=x<=a2
return (r <= a)or(((x%3) <= p) <= (q <= a))

ox = [i/4 for i in range(4*4,601*4)]
m = []

for a1,a2 in range(combinations(ox,2)):
if all(f(x) == 1 for x in ox):
m.append(round(a2-a1))

print(min(m))


Данная программа написана по идее А.Кабанова и дает ответ 169, кто сможет пояснить в чем ошибка?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3959
ссылка на сообщение  Отправлено: 16.05.23 13:03. Заголовок: s11kai пишет: Данная..


s11kai пишет:
 цитата:
Данная программа написана по идее А.Кабанова и дает ответ 169, кто сможет пояснить в чем ошибка?

Ошибкв в том, что эта программа проверяет не только целые значения x. А по условию они только целые.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 477
ссылка на сообщение  Отправлено: 17.05.23 02:49. Заголовок: Поляков пишет: Ошиб..


Поляков пишет:

 цитата:
Ошибка в том, что эта программа проверяет не только целые значения x. А по условию они только целые



И, все-же, данный алгоритм можно использовать, только, с учетом условия - не разбивать отрезки на интервалы!
 
def f(x):
p = 257<=x<=356
q = 5<=x<=600
r = 59<=x<=228
a = a1<=x<=a2
return (r <= a)or(((x%3 == 0) <= p) <= (q <= a))

ox = [i for i in range(5,600)]
m = []

for a1,a2 in combinations(ox,2):
if all(f(x) == 1 for x in ox):
m.append(a2-a1)
print(min(m))


1. Данный алгоритм выполняется примерно в 10 раз быстрее, т.е. 20 с., по сравнению с алгоритмами имеющими вложенные циклы - 200 c.
2. Сложность расстановки приоритетов при составлении условия
3. Универсальность. Эта программа позволяет работать при любых значениях переменной х, а не только с целыми значениями x.

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



Сообщение: 11
ссылка на сообщение  Отправлено: 16.05.23 11:54. Заголовок: Не знаю, как прикреп..


Не знаю, как прикрепить сюда файл
Залил на яндекс-диск аналитическое доказательство без программ
https://disk.yandex.ru/i/D0M_kLi5ewAobw

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





Сообщение: 478
ссылка на сообщение  Отправлено: 17.05.23 04:05. Заголовок: Max-xaM пишет: Зали..


Max-xaM пишет:

 цитата:
Залил на яндекс-диск аналитическое доказательство без программ
https://disk.yandex.ru/i/D0M_kLi5ewAobw




Интересное решение, вот код, строящий итоговою таблицу истинности для описанного способа:
 
print('P Q R X A F')
k = 0
for p in range(2):
for q in range(2):
for r in range(2):
for x in range(2):
for a in range(2):
f = ((r<=a)or((x<=p)<=(q<=a)))
if (f == False) and (k == 0):
k+=1
if (f == True) and (k == 1):
k = 0
print(p,q,r,x,a,int(f))

При желании, ее можно составить и в Excel_e

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





Сообщение: 474
ссылка на сообщение  Отправлено: 16.05.23 13:03. Заголовок: вот аналогичная зада..


Поляков пишет:

 цитата:
Ошибкв в том, что эта программа проверяет не только целые значения x. А по условию они только целые



Вот аналогичная задача 361 из генератора, она без round выдает так-же дробный ответ 12,75, можно предположить , что правильным будет ответ не 13, а 12?

(№ 361) На числовой прямой даны два отрезка: P=[2,20] и Q=[15,25]. Какова минимальная длина отрезка A, такого, что формула
((x ∉ А) → (x ∉ P) ) ∨ (x ∈ Q)

тождественно истинна, то есть принимает значение 1 при любом значении переменной х?
 
from itertools import *

def f(x):
P = 2<=x<=20
Q = 15<=x<=25
R = 59<=x<=228
A = a1<=x<=a2
return ((not A)<=(not P)) or Q

ox = [i/4 for i in range(1*4,26*4)]
m = []

for a1,a2 in combinations(ox,2):
if all(f(x) == 1 for x in ox):
m.append(a2-a1)
print(min(m))


Спасибо!

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





Сообщение: 475
ссылка на сообщение  Отправлено: 16.05.23 13:11. Заголовок: s11kai пишет: то ес..


Хотя, действительно, там сказано - при любом значении переменной х

Спасибо за науку!

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

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