-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Как написать код для ребуса: ДВА * ДВА = ЧЕТЫРЕ(1 решение)?

Пятница, 28 Августа 2020 г. 11:27 + в цитатник
xande.R: Подскажите пожалуйста как написать код решения ребуса ДВА * ДВА = ЧЕТЫРЕ(1 решение)?
Решение смог найти, у меня получилось так: 459 * 459 = 210681

Я никогда не понимал ребусы, и кое как смог решить этот, но как написать код тут не особо пойму.

Есть теория:
Математический ребус – логическая задача, где в арифметическом примере цифры заменены буквами (одинаковым цифрам соответствуют одинаковые буквы, разным – разные). Например, 123+456=579 можно закодировать как сом + лук = уха.

Решить математический ребус означает найти числа, которые были закодированы. Один из способов решения – перебор возможных значений для букв. Но полный перебор занимает много времени за счёт большого числа вложенных циклов, поэтому следует отсекать заведомо неподходящие значения. Например, очевидно, что с/=9, с/=,0, у/=,0, л/=9, л/=0. Таким образом, числа, закодированные словами «сом» и «лук» меняются от 100 до 800, а число, закодированное словом «уха» - от 200 до 999.

Числа нарезаются на цифры, которые помещаются в множество. Если мощность множества не равна 3 (цифры разные!), то число не подходит в качестве решения задачи и надо проверять следующее число.
И пример:

    set M;
    set N;
    for(int i=10000; i < 44000; i++)
    {
    if(i % 5 != 0)
    {
    M = Set_From_Number(i);
    if (M.size() == 5) {
    for (int j = 200; j < 1000; j++) {
    int t1 = j / 100;
    int t2 = (j / 10) % 10;
    if (t1%2 == 0 && i % 10 == t2) {
    N = Set_From_Number(j);
    if (N.size() == 3 && i * 2 == j * 100 + 10 * t2 + t1)
    cout << i << " + " << i << " = " << i * 2 << endl;
    }
    }
    }
    }
    }

https://forum.sources.ru/index.php?showtopic=419491&view=findpost&p=3837832

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку