Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 05.02.2019
Сообщений: 7

Вычислить наименьшее треугольное число, не меньшее М

06.02.2019, 11:16. Показов 4778. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Название треугольного числа происходит оттого, что n-е треугольное число (n1) описывает количество точек, из которых состоит треугольник, на стороне которого лежат n точек (см. рисунок). Требуется по заданному целому числу M найти наименьшее треугольное число, не меньшее, чем M.
Входные данные
9
Выходные данные
10

Входные данные
10
Выходные данные
10

Написал такой код:
Python
1
2
3
4
5
6
7
m = int(input())
a = 0
n = 1
while a + n < m:
    a += n
    n += 1
print(a + n)
В некоторых тестах выдаёт «Превышено максимальное время работы».
Как можно этот код сократить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2019, 11:16
Ответы с готовыми решениями:

Наименьшее треугольное число, не меньшее M
Входные данные В единственной строке задано целое число M Выходные данные Выведите единственное целое число, являющееся наименьшим...

Вывести наименьшее треугольное число, не меньшее заданного M
Известно, что числа получаемые суммированием начального отрезка натурального ряда называют треугольными . Название происходит оттого, что...

Дано натуральное число N. Получить наименьшее число вида 4k, меньшее N.
Дано натуральное число N. Получить наименьшее число вида 4k, меньшее N.

8
 Аватар для Den468
30 / 18 / 14
Регистрация: 19.12.2018
Сообщений: 104
06.02.2019, 11:32
Лучше так попробуй
Python
1
2
3
4
5
6
7
def triangleNum(num):
    T = 0
    for n in range(num+1):
        T=(n*(n+1))/2
        n += 1 
        print(T)
    return T
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,684
Записей в блоге: 14
06.02.2019, 17:48
Python
1
2
3
4
5
6
7
8
9
10
def getTriNum(n):
    k=1
    while(True):
        t=k*(k+1)//2
        if (t>=n):
            return t
        k+=1
 
n=int(input())
print(getTriNum(n))
https://ideone.com/b2VfdO

Den468, менять параметр цикла (n) в теле цикла - это очень плохая практика...
0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
06.02.2019, 18:17
Цитата Сообщение от Кухаренко С Посмотреть сообщение
(см. рисунок)
Где рисунок-то?
Если я правильно понимаю, треугольные числа находятся по простой формуле n*(n+1)/2, таким образом, задача сводится к решению квадратного неравенства.
0
 Аватар для Den468
30 / 18 / 14
Регистрация: 19.12.2018
Сообщений: 104
06.02.2019, 18:47
Catstail, можно подробнее? Я лично впервые про существование таких чисел сегодня узнал, а программу написал исходя из формулы найденной на Wikipedia
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,684
Записей в блоге: 14
06.02.2019, 19:39
Den468, я имел в виду следующее:

Python
1
2
3
4
5
6
7
def triangleNum(num):
    T = 0
    for n in range(num+1):  ## n - это переменная цикла. Ее значение автоматически меняет исполнительная среда
        T=(n*(n+1))/2
        n += 1  ## а здесь она явно увеличивается. Так делать не надо.
        print(T)
    return T
0
 Аватар для Den468
30 / 18 / 14
Регистрация: 19.12.2018
Сообщений: 104
06.02.2019, 19:55
Catstail, в таком случае вообще цикл не нужен, выходит. Раз число можно вычислить таким образом:
Python
1
2
3
4
def triangleNumTest(num):
    T = (num*(num+1))/2
    print(T)
    return T
Или же и этот код не верен?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,684
Записей в блоге: 14
06.02.2019, 20:22
Цитата Сообщение от Den468 Посмотреть сообщение
Или же и этот код не верен?
- конечно. Читай условие: дано некое n, нужно ближайшее большее треугольное. А последовательность треугольных чисел такова {1,3,6,10,15...} Предположим n=9. Очевидно, ближайшее треугольное, большее 9 - это 10. Если подставить n=9 в твой код, то получим 9*10/5=45. И даже не как целое,
а как вещественное (45.0), т.к. ты забыл, что целочисленное деление - это "//", а не "/".
1
 Аватар для Den468
30 / 18 / 14
Регистрация: 19.12.2018
Сообщений: 104
06.02.2019, 20:26
Catstail, спасибо за объяснение, кажется понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2019, 20:26
Помогаю со студенческими работами здесь

Найти наименьшее число n, для которого выполняется условие 2 n / n!<e , где e – заданное положительное число, меньшее 1
Найти наименьшее число n, для которого выполняется условие 2 n / n!&lt;e , где e – заданное положительное число, меньшее 1 c++ ...

За какое наименьшее число ходов можно собрать количество камней каждого цвета не меньшее необходимого для победы
В любимой настольной игре Эдварда есть камни трех цветов: зеленого, белого и красного. За один ход можно взять либо три камня, по одному...

треугольное число
Вводится последовательность из n чисел. Определить, является ли введённое число треугольным. Треугольными считаются числа такие: первый...

Треугольное число
Здравствуйте, форумчане, преподаватель для зачета дал такое задание: Треугольное число с индексом N - это сумма всех натуральных чисел...

Треугольное число, списки
Привет Есть задача: Треугольное число с индексом N - это сумма всех натуральных чисел до N включительно. Напишите программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru