Аккаунт удален
Опубликовано 6 лет назад по предмету Информатика от Аккаунт удален


Pascal Найти 20 первых натуральных чисел, делящихся нацело на 13 или на 17 и находящихся в интервале, левая граница которого равна 500.

  1. Ответ
    Ответ дан Аккаунт удален
    На интервале с левой границей 500 первое число, кратное 13, равно 507, а первое число, кратное 17, равно 510. Числа, кратные 13, образуют последовательность 507, 520, 533, ..., а числа, кратные 17, образуют последовательность 510, 527, 544, ... Для решения задачи достаточно объединить эти последовательности в одну, упорядоченную по возрастанию и взять первых 20 её членов.Как получить 507 и 510? Первое число m, не меньшее некоторого k и кратное n определяется по простому алгоритму. Пусть p = k mod n - остаток от целочисленного деления k на n. Если p=0, то m=k, в противном случае m=k+n-p.Проверим для k=500, n=13.p = 500 mod 13 = 6. p≠0 ⇒ m = 500+13-6 = 507.Поскольку 17>13, в последовательности чисел, кратных 17, их не может быть больше половины искомого количества, т.е. больше 20/2=10. А десятый член последовательности 510, 257, ... это 510+9×17 = 663. Тем более, это значение не может быть превышено в последовательности чисел, кратных 13, их там будет (663-507)/13=12.Окончательно: строим последовательности из 12 чисел ряда 507, 520, 533... и 10 чисел ряда 510, 527, 544, ... объединяем их в последовательность, упорядоченную по возрастанию и берем 20 первых ее членов.PascalABC.NET 3.3.5, сборка 1660 от 20.04.2018Внимание! Если программа не работает, обновите версию!begin  (SeqGen(12,507,t->t+13)+SeqGen(10,510,t->t+17)).OrderBy(t->t)      .Distinct.Take(20).Printlnend.Результат507 510 520 527 533 544 546 559 561 572 578 585 595 598 611 612 624 629 637 646
Не тот ответ, который вам нужен?
Найди нужный
Задай вопрос

Лучшие за месяц