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

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

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

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



Сообщение: 2
ссылка на сообщение  Отправлено: 01.05.21 23:14. Заголовок: 23 задание (4040 из генератора)


Добрый день!
23 задание (4040 из генератора)
(№ 4040) Исполнитель Калькулятор преобразует число, записанное на экране в троичной системе счисления. У исполнителя есть две команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 2 и прибавь 1
Сколько различных результатов можно получить из исходного числа 3 после выполнения программы, содержащей ровно 12 команд?

Я эту задачу решал с помощью программы
 
d=set()
def f(x,c):
global d
if c==12:
d.add(x)
else:
f(x+1,c+1)
f(x*2 +1, c+1)

f(3,0)
print(len(d))

Результат 1340
А в ответе на сайте указано 377
Так как с помощью аналогичных программ я решил подобные задачи 4036-4039 и ответ сошелся, то подозреваю, что именно для задачи 4040 ответ указан неправильный

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





Сообщение: 1
ссылка на сообщение  Отправлено: 03.05.21 14:40. Заголовок: добрый день! в этой ..


добрый день! в этой задаче тоже получился ответ 1340, решал через Excel

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





Сообщение: 135
ссылка на сообщение  Отправлено: 02.04.22 11:33. Заголовок: Demank765 пишет: до..


Demank765 пишет:

 цитата:
добрый день! в этой задаче тоже получился ответ 1340, решал через Excel



Demank765, покажи, пожалуйста, свое решение в Excel, я чего то даже не могу понять, как к нему приступиться

Спасибо

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




Сообщение: 2779
ссылка на сообщение  Отправлено: 04.05.21 21:07. Заголовок: Спасибо, опечатка в ..


Спасибо, опечатка в условии исправлена. Ответ тот же.

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





Сообщение: 8
ссылка на сообщение  Отправлено: 22.11.21 18:30. Заголовок: Здравствуйте, разве ..


Здравствуйте, разве алгоритм выше находит различные значения? Ведь он просто считает количество ветвей в дереве, а вот различные ли они, он не проверяет... Вот моя программа ниже. Ответ 365.
 
function q(a:integer; s:integer;k:integer):integer;
begin
if (a=s) and (k=12) then q:=1 else
if (a>s) or ((a<=3) and (k>0)) or (k>12) then q:=0 else
begin q:=q(a+1,s,k+1)+q(a*2-3,s,k+1); end;
end;
var n:integer;
begin
for var z:=1 to 10000000 do
if q(3,z,0)<>0 then n:=n+1;
writeln(n);
end.


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




Сообщение: 3029
ссылка на сообщение  Отправлено: 23.11.21 21:53. Заголовок: Ельцова пишет: ((a&#..


Ельцова пишет:
 цитата:
((a<=3) and (k>0))

Это зачем?

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



Сообщение: 2
ссылка на сообщение  Отправлено: 20.02.22 14:54. Заголовок: Программа выдаёт 376, а в ответе 377. Подскажите в чем ошибка.


Function f(x,y,k:integer):integer;
Begin
if(x>y)or(k>12) then result:=0
else if (x=y) then if k=12 then result:=1
else result:=0
else result:=f(x+1,y,k+1)+f((x*2-3),y,k+1);
end;
var
q,i:integer;
Begin
q:=0;
For i:=1 to 10000 do
begin
if f(3,i,0)<>0 then q:=q+1;
end;
writeln(q);
end.

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




Сообщение: 3338
ссылка на сообщение  Отправлено: 20.02.22 23:22. Заголовок: 23Olya пишет: Functi..


23Olya пишет:
 цитата:
Function f(x,y,k:integer):integer;
Begin
if(x>y)or(k>12) then result:=0
else if (x=y) then if k=12 then result:=1
else result:=0
else result:=f(x+1,y,k+1)+f((x*2-3),y,k+1);
end;
var
q,i:integer;
Begin
q:=0;
For i:=1 to 10000 do
begin
if f(3,i,0)<>0 then q:=q+1;
end;
writeln(q);
end.

Вы теряете вариант, когда из 3 получается 2*3-3 = 3.

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




Сообщение: 3337
ссылка на сообщение  Отправлено: 20.02.22 23:14. Заголовок: allResults = set() ..


 allResults = set() 
def rec( n, remains ):
if remains == 0:
allResults.add( n )
return
rec( n+1, remains-1 )
rec( n*2-3, remains-1 )

rec( 3, 12 )
print( len(allResults) )


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





Сообщение: 136
ссылка на сообщение  Отправлено: 02.04.22 22:48. Заголовок: Поляков пишет: all..


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

 цитата:
allResults = set()



скажите пожалуйста, а что делает данная строка?

Спасибо

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




Сообщение: 3434
ссылка на сообщение  Отправлено: 02.04.22 22:57. Заголовок: s11kai пишет: скажит..


s11kai пишет:
 цитата:
скажите пожалуйста, а что делает данная строка?

Создает пустой объект-множество.

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





Сообщение: 137
ссылка на сообщение  Отправлено: 03.04.22 04:55. Заголовок: Поляков пишет: Созд..


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

 цитата:
Создает пустой объект-множество



Спасибо, Константин Юрьевич!

Правильно ли я понимаю, что команда а.add(n) для множества эквивалентна команде a[n] = n для массива.

Если это действительно так, то, видимо, пользоваться множеством проще чем массивом
Пытаюсь написать программу через массив, но ни как не удается создать пустой массив, поэтому получается сложновато
 
N = 5000
a=[0]*N
def f( n, k ):
if k == 0:
a[n]= n
return
f( n+1,k-1 )
f( n*2-3,k-1 )

f(3, 12)
print(N-a.count(0))

Вот если-бы избавится от задания размера массива, который заранее неизвестен или этого добиться в питоне невозможно?

Еще раз, огромное спасибо за лаконичное решение и пояснения

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





Сообщение: 22
ссылка на сообщение  Отправлено: 03.04.22 22:54. Заголовок: s11kai пишет: Вот е..


s11kai пишет:

 цитата:
Вот если-бы избавится от задания размера массива, который заранее неизвестен или этого добиться в питоне невозможно?



Создаете пустой массив:
a=[]
Добавляете в него элементы по мере необходимости:
a.append(элемент)

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





Сообщение: 139
ссылка на сообщение  Отправлено: 04.04.22 01:55. Заголовок: yflzu@mail.ru пишет:..


yflzu@mail.ru пишет:

 цитата:
a=[]
Добавляете в него элементы по мере необходимости:
a.append(элемент)



Так тоже пробовал:
 
a=[]
def f( n, k ):
if k == 0:
a.append(n)
return
f( n+1,k-1 )
f( n*2-3,k-1 )

f(3, 12)
print(len(a))

Но проблема в том, что a.append() - добавляет новый элемент не по индексу, а в конец, размножая одинаковые элементы.
Поэтому получаем массив из 4096 элементов, а по условию нужно найти: Сколько различных результатов можно получить из исходного числа?
Вот и получается, что полученный массив нужно еще обработать, чтобы получить массив из неповторяющихся элементов, поэтому делаем вывод: для решения данной задачи нужно использовать не массив, а множество!

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



Сообщение: 16
ссылка на сообщение  Отправлено: 16.06.22 14:16. Заголовок: получили массив, а и..


получили массив, а из него множество неповторяющихся элементов:
b = set(a)
print(len(b))

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





Сообщение: 172
ссылка на сообщение  Отправлено: 16.06.22 18:01. Заголовок: Yflzf55 пишет: полу..


Yflzf55 пишет:

 цитата:
получили массив, а из него множество неповторяющихся элементов:
b = set(a)
print(len(b))


так просто!

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

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