|
3 / 3 / 0
Регистрация: 03.06.2019
Сообщений: 64
|
||||||
Указать наименьшее значение, которое делится на число составленное из последовательности цифр03.06.2019, 21:53. Показов 3717. Ответов 14
Метки нет (Все метки)
Условие:
Последовательные натуральные числа от a до b выписали одно за другим без пропусков, при этом образовалось число, нацело делится на натуральное c. По данным a и c указать наименьшее значение b. Входные данные: Два числа a и c (a, c <10000, a ≤ b). Исходные данные: Вывести число b. Пример: входные данные: 11 3 Исходные данные: 13 //объяснение: имеем а = 11. Оно не кратное 3, тогда добавляем к числу сзади 2 цифры числа 12, число уже = 1112. Оно все еще не кратное 3, тогда плюсуем 13: число = 111213, и оно уже кратное 3. Переменная b в таком случае будет равна 13 - последнему прибавленному натуральному числу. У меня получился код, на подобии этого:
0
|
||||||
| 03.06.2019, 21:53 | |
|
Ответы с готовыми решениями:
14
Найти наименьшее число M, которое делится на сумму цифр числа N |
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 03.06.2019, 22:14 | |
Сообщение было отмечено NuMeRiC_ как решение
Решение
NuMeRiC_, самая главная беда здесь в том, что образованное приписками число может оказаться довольно большим. и обычная арифметика с ним не справится.
Хотя тут можно попытаться выкрутится, так как деление нам требуется по модулю c < 10000 Добавлено через 10 минут И, конечно, pow надо засунуть куда подальше подальше. Задача целочисленная, и нечего привлекать неточные функции работы с плавающими числами. Но, наверное, может помочь такое соображение (x*y +z) % c математически равно (((x%c)*(y%c))%c + z%c)%c - гомоморфизм кольца целых чисел на кольцо вычетов по модулю. И вот это соображение позволит обойтись без длинной арифметики. Как-бы алгоритм просматривается, но глаза слипаются... ![]()
2
|
|
|
Комп_Оратор)
|
|||||||
| 03.06.2019, 22:27 | |||||||
0
|
|||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||||||
| 04.06.2019, 09:32 | |||||||
|
Представьте, a = 1, c=100 даст b = 100. А полученное число d будет иметь 192 цифры. ![]() Добавлено через 11 минут
1
|
|||||||
|
Комп_Оратор)
|
|||
| 04.06.2019, 09:52 | |||
int и он знаковый в двух смыслах, так как выбран таковым намеренно. Ведь новичковская же задача. И да. Лучше unsigned long long выбрать. Но если решать в общем виде, анализируя сумму без её вычисления, нужно уже теоремки подоказывать. Тут есть о чём подумать... И я подумаю, но боюсь, тут есть люди которые гораздо сильнее меня и на этом поприще. Вы в частности.![]() Добавлено через 16 минут
0
|
|||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||
| 04.06.2019, 10:19 | ||||
|
ДорогойIGPIGP!
А если "по-умному" f(x+y) = f(x) + f(y) f(x*y) = f(x)*f(y) Это и есть "гомоморфизм" (Умеют же математики словечки придумывать! )Добавлено через 12 минут А вот чтобы доказать, что алгоритм кончится, тут, да - подумать надо.... Я вот не вижу простого доказательства.... Может быть к математикам обратиться... Добавлено через 5 минут Можно ли гарантировать делимость полученного числа?
1
|
||||
|
Комп_Оратор)
|
||||
| 04.06.2019, 12:08 | ||||
0
|
||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 04.06.2019, 23:11 | ||
1
|
||
|
Комп_Оратор)
|
||||||
| 05.06.2019, 00:09 | ||||||
|
Байт, я может всё понял по своему, но мне кажется, что для операции остаток (%) :
f(a+b)=f(f(a)+f(b)) а не просто: f(a+b)=f(a)+f(b) А для произведений совсем не получается (у меня). Вот пара чисел 10 и 21 10%21=10 100%21=16 1000%21=13 10000%21=4 а ведь произведение остатков для 100 должно было дать 100? Для степеней чисел, а нас интересует, как я понимаю, степень 10-ки которая и придаёт итоговому числу его протяженность многоразрядную и ко всякому переполнению приводящую, получается вроде: f(a*a*a*a)=f(a*a*a*f(a)) но это не только для 4-й степени, а можно смело многоточия расставить как-то так: f(a*a*...*a*a)=f(a*a*...*a*f(a))
А если учесть что: f(a*b)=f(a*f(b)) то применяя это рекурсивно к степеням получаются трудно записываемые выражения (скобок много). И алгоритм напрашивается рекурсивный. Тут Ivana бы помог. (имхо)
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 05.06.2019, 00:16 | |||
|
Но там есть некоторые маленькие хитрости. В арифметике "по модулю" считается, что числа, отличающиеся на этот модуль просто равны. 16 = 37 = -5 (mod 21) 10*10 = 100 = 16 (mod 21) 16*10 = 160 = 13 = -8 (mod 21) Строго математически это выглядит так. Множество чисел разбивается на "классы" (никакого отношения не имеющие к классам С++) К одному классу принадлежат числа, дающие одинаковый остаток на этот "модуль" (опять же, не путать с модулем, как абсолютной величиной, с функциями abs, fabs) 2, 23, 44, -19... - это все числа одного класса для модуля 21 Но чтобы не иметь дела с классами (множествами), ибо это утомительно писать "2 + 21*k" (вспомните решение тригонометрических уравнений), хитрые бандюги-математики имеют дело с их "представителями": 2, -19 ... Фишка в том, что любое действие с исходными числами однозначно переносится на действия с "представителями". А для них вот выполняются равенства, которые я привел выше. Голову я вам не совсем заморочил? Тут вам может быть поможет соображение Гермеса Трисмегиста: "Что наверху - то и внизу" Наверху - числа. Внизу - остатки от деления (кольцо по модулю) Остатки в арифметике по модулю - это как бы проекция истинных вычислений. Надеюсь, что не очень вас утомил этой маленькой лекцией... ![]() Добавлено через 6 минут Но, впрочем, я не намерен далее испытывать ваше терпение на предмет своего занудства
0
|
|||
|
Комп_Оратор)
|
|||||||||
| 05.06.2019, 10:01 | |||||||||
|
Вот это - легкий укол: 1. f(x+y) =f(f(x) + f(y)) - это то что работает. Вот что получается для чисел a != b f(a*b)=f(a+a+...+a)//b-раз складываем a и получаем: f(f(a)+f(a)+...+f(a)) и f(b*f(a)) Для степеней получается (у меня) вот как: f(ab)=f(a*f(ab-1)) и это ключ к упрощению вычислений так как мы вычисляем ряд степеней 10-ки и можем использовать предыдущий результат. 2. составляющих чисел в строку. Тут может вы и правы. Тогда задача сводится к подсчёту количества добавочных чисел, а потом печать "разворачивает" последовательность в "вид" числа. Если это так, то я снова поражаюсь отсутствием у математиков элементарной способности удерживать границы абстракции. Ведь
0
|
|||||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||
| 05.06.2019, 23:52 | ||||
Ликбез, который я пытался предпринять, признаюсь, был неудачен. Просто я знаю такие алгебраические понятия, как "кольцо", фактор-кольцо", "идеал", "смежные классы", "гомоморфизм" (узнал я их не в 7-м классе, а много позже, но основа для понимания этих чудес была заложена именно тогда) а вы, скорее всего, не очень. И беды здесь нет никакой. Как и чьегото превосходства. Давайте послушаем кота Леопольда и других мудрых созданий...
0
|
||||
|
Комп_Оратор)
|
||
| 06.06.2019, 02:33 | ||
![]() Что же касается фразы "указать значение", то она достаточно многозначна и возможно вы правы. Однако, я не люблю "хитрых" заданий. Потому что знаю множество задач, где без ребусов, а достаточно прозрачно сформулированное условие тем не менее требует серьёзных раздумий. А коли программисты пишут задачу и говорят о значении, то мне кажется естественным понимать под этим значение а не визуальное отображение. Я не спорю с тем, что задача в вашей интерпретации верна. Мне не нравится формулировка самой задачи.
0
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 06.06.2019, 11:52 | |||
![]() Вы наверное знаете, что функция определяется тремя вещами: Множеством (областью) определения, Множеством (областью) значений и Правилом, задающим для каждого элемента из области определения элемент-значение. При несовпадении хотя бы одной из этих вещей функции - разные. Для нашей функции (f(x) - взятие остатка от деления x на, скажем, 3) Множество определения - все целые числа (обозначается обычно Z). Множество значений имеет 3 элемента, чтобы не путать, обозначим их a0, a1, a2 - множество M Правило простое: f(x) = x%3 На множестве M естественным образом вводятся операции сложения и умножения a0+a0= a0 a0+a1=a1 a0+a2=a2 a1+a1=a2 a1+a2=a0 a2+a2=a1 a0*a0=a0 a0*a1=a0 ... a2*a2=a1 И... большая удача! Функция f оказывается гомоморфизмом! Т.е. f(x+y)= f(x) + f(y) и f(x*y) = f(x)*f(y). Собственно,, мы для этого так определили операции. Но хочу обратить ваше внимание на то, что знаки операций в левых и правых частях этих равенств имеют совершенно разный смысл! Слева - привычные нам операции над целыми числами, справа - операции над элементами множества М, которые мы недавно определили. Теперь возьмем вашу формулу и ее правую часть f(f(x) + f(y)). f(x) f(y) - элементы множества М. f(x)+f(y) - тоже. Он равен некоторому элементу Не по теме: Фу, приустал, сейчас перекурю, и снова в бой:) Добавлено через 32 минуты В компьютере есть замечательный набор операций над целыми числами (Z). Но увы! нет операций над множеством М и ему подобными. Сложения и Умножения. Что же делать бедолаге-программисту? А все просто! Вместо a0, a1, a2 он берет ЛЮБОГО представителя уже из Z. И совершает операцию с ним. А потом "спускает" результат в М. Если взятие представителя обозначить как p(m), то ваша формула будет выглядеть так f(x+y) = f(p(f(x)) + p((f(y))) Поэтому в моем коде из поста 4 содержится так много процентиков. И Алгебра гарантирует, что результат не зависит от выбора конкретного представителя. ЗЫ. Вы спросите, зачем городить такие огороды. Но Алгебра имеет дело не только с целыми числами, а с множеством других объектов. Оказывается, что если эти объекты выполняют несколько простых аксиом (аксиом Кольца), то все это применимо и к ним. А при изучении всех этих абстракций большим подспорьем является Кольцо целых чисел и его Фактор-Кольца - множества остатков от деления. Ввиду своей простоты и интуитивной доступности даже для семикласника. ![]() Добавлено через 3 минуты ![]()
1
|
|||
| 06.06.2019, 11:52 | |
|
Помогаю со студенческими работами здесь
15
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|