Генерация числовой последовательности - PullRequest
2 голосов
/ 09 октября 2011

Учитывая целое число N (0 M больше N , M имеет одинаковую длину с N , а сумма цифр равна. если M не существует, вернуть -1

пример:

N = 134, M = 143, // 1 + 3 + 4 = 1 + 4 + 3

N = 020, M = 101, // 2 = 1 + 1, кажется, 0 можно добавить, чтобы сделать длину равной

N = 120, M = 201, // 2 = 1 + 1

Вопрос - это письменный тестовый вопрос, который я задал сегодня, я понятия не имею, как его решить в огромном объеме N .

1 Ответ

0 голосов
/ 09 октября 2011

Представляет числа в виде строк цифр. N и M - это две строки одинаковой длины.

Давайте наберем N цифр как N k , где N 0 является последним ( крайняя справа) цифра.

Набор M 0 = N 0 - 1, M 1 = N 1 + 1, M i = N i в противном случае. Сумма цифр M остается такой же, как в N , потому что вы только что переместили 1 из одной цифры в другую, но теперь M > * +1049 * N . * * тысяча пятьдесят-одна

Конечно, этот трюк не работает, если N 0 = 0 или если N 1 = 9. В этом случае , перейти к N 1 и N 2 для передачи 1 и т. д.

В качестве упражнения докажите, что M , созданный таким образом, действительно является наименьшим числом, удовлетворяющим условиям. (Или опровергнуть - я могу ошибаться, особенно в случае N 0 = 0, хотя я не понимаю, где я ошибаюсь.)

...