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

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

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

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



Сообщение: 1
ссылка на сообщение  Отправлено: 03.04.21 14:19. Заголовок: 23 задание (3613 генератор)


Не могу на сайте Полякова К. найти решение таких задач. Перебор здесь делать долго. Подскажите, пожалуйста.
(№ 3613) (Е. Джобс) Исполнитель Простачок преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 2
2. Прибавить 3
3. Умножить на 2
Первая команда увеличивает число на 2, вторая – на 3, третья – увеличивает число вдвое. Сколько различных чисел может быть получено из числа 10 всеми возможными алгоритмами длиной 5 команд?

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







Сообщение: 412
ссылка на сообщение  Отправлено: 03.04.21 16:51. Заголовок: Ответ


Здравствуйте!

Вот вариант решения:
 
L = [10]
for k in range(5):
n = len(L)
for i in range(n):
L.append(L[0]+2)
L.append(L[0]+3)
L.append(L[0]*2)
L.remove(L[0])
print(len(set(L)))


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



Не зарегистрирован
ссылка на сообщение  Отправлено: 20.06.21 11:23. Заголовок: Помогите) № 2765 генератор сайта Полякова


polyakovss
Не подскажете как решается эта задача?
№ 2765) Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 4
3. Умножить на 2
Программа для исполнителя Калькулятор – это последовательность команд. Сколько существует программ, состоящих из 7 команд, для которых при исходном числе 3 результатом является число 27?

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



Сообщение: 1
ссылка на сообщение  Отправлено: 20.06.21 11:28. Заголовок: IrjkfIrjkf15 Спасиб..


IrjkfIrjkf15

Спасибо дошло

def f(x,l,t=[]):
if l==7:
return t+[x]
else:
return f(x+1,l+1,t)+f(x+4,l+1,t) +f(x*2,l+1,t)

a=f(3,0,[])
print(sorted(a).count(27))

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



Сообщение: 2
ссылка на сообщение  Отправлено: 20.06.21 11:28. Заголовок: IrjkfIrjkf15 Спасиб..


IrjkfIrjkf15

Спасибо дошло

def f(x,l,t=[]):
if l==7:
return t+[x]
else:
return f(x+1,l+1,t)+f(x+4,l+1,t) +f(x*2,l+1,t)

a=f(3,0,[])
print(sorted(a).count(27))

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 07.02.22 14:58. Заголовок: Спасибо!..


Спасибо!

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



Сообщение: 2
ссылка на сообщение  Отправлено: 04.04.21 11:57. Заголовок: 23 задание (3613 генератор)


Спасибо. Была бы очень благодарна за программу на Паскале.
(№ 3447) (С.С. Поляков) У исполнителя Калькулятор есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 5
3. Умножить на 3
Сколько разных чисел может быть получено из числа 1 с помощью программ, состоящих из 7 команд?

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





Сообщение: 415
ссылка на сообщение  Отправлено: 04.04.21 16:24. Заголовок: Ответ


Здравствуйте!

Можно, например, так на PascalABC.Net (№ 3447):
 цитата:
## 
var L := Lst(1); // 1 - исходное число
for var k := 0 to 7-1 do begin // 7 - количество команд
var n := L.Count;
for var i := 0 to n-1 do begin
L.Add(L[0]+1);
L.Add(L[0]+5);
L.Add(L[0]*3);
L.RemoveAt(0);
end;
end;
Writeln(L.Distinct.Count);



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



Сообщение: 7
ссылка на сообщение  Отправлено: 05.04.21 05:11. Заголовок: Замечание


polyakovss пишет:

 цитата:
Можно, например, так на PascalABC.Net (№ 3447):



А лучше так оформить:
##  
var (m, n) := (1, 7);
var L := Lst(1);
loop n do
begin
loop L.Count do
begin
L.Add(L[0] + 1);
L.Add(L[0] + 5);
L.Add(L[0] * 3);
L.RemoveAt(0)
end
end;
L.Distinct.Count.Print


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



Сообщение: 27
ссылка на сообщение  Отправлено: 04.04.21 14:40. Заголовок: Здравствуйте. Да, по..


Здравствуйте. Да, пожалуйста, если можно, то на Паскале такой тип заданий. Пробовала делать в экселе перебором, но долго. Для 4-х команд еще организовала и решила, но вот для 7 команд, понимаю, что в условиях экономии времени просто нереально будет без ошибок выполнить.

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





Сообщение: 23
ссылка на сообщение  Отправлено: 26.04.21 22:35. Заголовок: Мой ход решения рекурсией


Здравствуйте!
 
def f(x,l,t=[]):
if l==5:
return t+[x]
else:
return f(x+2,l+1,t)+f(x+3,l+1,t)+f(x*2,l+1,t)

a=f(10,0,[])
print(len(set(a)))


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



Сообщение: 3
ссылка на сообщение  Отправлено: 13.06.21 21:45. Заголовок: Подскажите, где ошиб..


Подскажите, где ошибка? 116) (С.С. Поляков) Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 5
3. Умножить на 3
Сколько разных чисел может быть получено из числа 1 с помощью программ, состоящих из 4 команд?
 var a: array of integer; 
var i:=0;
function f(x, k:uint64):uint64;
begin
if x > 4 then F:=0;
if k = 4 then begin i+=1; a[ i]:=f(x,k); end
else F:=0;
if x < 4 then F:=f(x+1,k+1)+f(x+5,k+1)+f(x*3,k+1);
end;
begin
f(1,0);
print (f(1,0));
for var j:=1 to i do
print(a[j])
end.


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





Сообщение: 12
ссылка на сообщение  Отправлено: 23.11.21 11:16. Заголовок: Мое решение на PascalABC.Net (№ 3447):


var l:=new List<integer>; 
procedure f(a,n:integer);
begin
if n<7 then begin
f(a+1,n+1);
f(a+5,n+1);
f(a*3,n+1);
end
else if n=7 then l.Add(a);
end;
begin
f(1,0);
L.Distinct.Count.Print;
end.//393


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

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