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

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

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

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



Сообщение: 38
ссылка на сообщение  Отправлено: 05.10.22 16:07. Заголовок: 25.5663 (PRO100 ЕГЭ) - другой ответ?


Написал программу, однако совпал только 1-й ответ?
 
## uses school;

function f(x: integer): boolean;
begin
var (i1,i2) := (x.Digits.IndexOf(1)+1,0); //позиция первой 1 (+1 для строк)
var s:=x.ToString;
for var i:=1 to s.Length - 1 do
if s[i:i+2]='68' then i2:=i;
if (i2-i1 >=3) and (i1>0) then Result:=true;
end;

var (x,c):=(1000,0);
while x<=17000000 do
begin
if f(x) and x.divs(161) then
begin
c+=1;
if (c mod 500 = 1) then
println(x,x div 161);
//println(c,x,x div 161);
end;
x+=1;
end;

{
Ответ:
14168 88
10658683 66203
12668285 78685
14702681 91321
16738687 103967
}

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет [см. все]


Администратор




Сообщение: 3724
ссылка на сообщение  Отправлено: 05.10.22 18:26. Заголовок: Спасибо, ответ испра..


Спасибо, ответ исправлен.

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





Сообщение: 12
ссылка на сообщение  Отправлено: 01.11.22 11:33. Заголовок: 25 Задание № 5663


Здравствуйте ! Вопрос по тому же заданию 5663.
{#Среди натуральных чисел, не превышающих 17*10^6, найдите все числа,
#соответствующие маске *1?*?68*, делящиеся на 161 без остатка
#вывести каждое пятисотое число, начиная с первого, в порядке возрастания (1-е, 501-е, 1001-е....)
k=0
for i in range(161,17000001,161):
x=str(i)
in1= x.find('1')
in68=x.find('68',3)
if 0<=in1<=4 and (in68-in1)>=2 and i % 161==0:
k+=1
if k==1 or (k % 500)==1: print("Число ",i, ' Частное ',i//161)
print("k= ",k)
}
Получаю ответы:
Число 14168 Частное 88
Число 10068296 Частное 62536
Число 12088685 Частное 75085
Число 14106820 Частное 87620
Число 16146368 Частное 100288
Не пойму что не так?

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





Сообщение: 3
ссылка на сообщение  Отправлено: 16.04.23 13:24. Заголовок: У вас программа не л..


У вас программа не ловит числа, в которых 68 входит дважды. Например 1268680. Нужно использовать rfind - искать последнее вхождение 68 в стороку.
И разница 68-го и 1-го должна быть>=3

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

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