Size: a a a

2021 May 28

С

Сергей in pro.algorithms
bool foo(int n)
{
   std::vector<int> nums { 111111111, 11111111, 1111111, 111111, 11111, 1111, 111, 11 };
   for (int num : nums) {
       while (n > num)
           n -= num;
   }
   return n == 0;
}
источник

MB

Mikail Bagishov in pro.algorithms
По-моему на 121 этот код сломается
источник

VU

Vadim Ushakov in pro.algorithms
Из 1 очевидно можно получить любое число, сложив его сколько нужно раз.
источник

С

Сергей in pro.algorithms
возможно докрутить надо  - не проверял.что-то такого тупенького абсолютно )) по аналогии перевода римских в обычные (иил наоборот).
источник

MB

Mikail Bagishov in pro.algorithms
Я не уверен, что тут жадное решение сработает
источник

VU

Vadim Ushakov in pro.algorithms
А, т.е. начиная с двухзначных?
источник

MB

Mikail Bagishov in pro.algorithms
Вполне возможно, что для какого-то не очень большого N окажется, что все числа до N можно набрать, и тогда можно до него добить жадно а потом хвостик динамикой решить
источник

MB

Mikail Bagishov in pro.algorithms
Собственно да, посмотрим на число вида 11x. Мы можем перейти к 11(x-10) + 111 и увеличить сумму на 1. Если x >= 100, то мы можем сделать так 10 раз.

Тогда получается, что мы можем набрать любое число начиная с 1100, с помощью одних лишь 10 и 11 (сначала берем 11-ки пока можем, потом пачки из 10 11-ок заменяем на одно 111).
источник

MB

Mikail Bagishov in pro.algorithms
Ну а для чисел до 1100 можно сделать динамику
источник

AK

Alexander Kryukov (k... in pro.algorithms
Так же сломается
источник

AK

Alexander Kryukov (k... in pro.algorithms
Но на другом примере
источник

AK

Alexander Kryukov (k... in pro.algorithms
Например 11112
источник

CD

Constantine Drozdov in pro.algorithms
А нельзя там что-нибудь заметить в стиле 9 * 111 + 1 = 1000?
источник

MB

Mikail Bagishov in pro.algorithms
Возможно, можно.

Но мне кажется того что я написал уже должно хватить.
источник

CD

Constantine Drozdov in pro.algorithms
Ну я имею в виду: перебираем сумму цифр в 1+ричной системе счисления, там будет 9*x + \sum a[i] = \sum a[i] * (9 * base[i] + 1), таким образом для заданного параметра k = \sum a[i] перебора вопрос "число 9*x + k должно делиться на 100 и представляться в десятичной системе с суммой цифр k"
источник

K

Kotomord_λapki in pro.algorithms
Начиная с 111*11 можно любое, до него - тривиальное дп
источник

K

Kotomord_λapki in pro.algorithms
Первое - у нас для любого остатка  k по модулю 11 k*111 имеет такой остаток, дальше дополняем слагаемыми 11
источник

K

Kotomord_λapki in pro.algorithms
Да даже не дп
источник

K

Kotomord_λapki in pro.algorithms
Представимо ли в виде 11а+111b - считаем остаток по модулю 11, полагаем b им, если не перебрались за число - представимо, иначе нет
источник

K

Kotomord_λapki in pro.algorithms
11*111 < 2000
источник