|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.05.2008, 08:56 | #1 |
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
Задача на свойства чисел
Задача, найти(за максимально короткое время) сколько чисел в диапазоне от a b(a,b ≤ 10 в 18) имеют хотя бы одну одинаковую противоположную цифру, то есть какое-нибудь Ki = Kn+1−i при i ≠ n+1−i. Наример в диапазоне от 10 до 99 таких чисел 9 (11,22...99) У кого какие предложения?
|
01.05.2008, 09:25 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
По моему можно рассуждать так:
берем число x----------------x Для крайних рахрядов этого числа, как уже было замечено, 9 вариантов y--------------y Берем внутреннюю последовательность. Для ее крайних разрядов уже 10 вариантов (добавляется 0). Эти варианты могут быть с любыми цифрами слева и справа (кроме левого нуля). Итого 9 (от предыдущей) + 9*10*10 (если не ошибаюсь). И так далее для внутренних последовательностей. |
01.05.2008, 09:32 | #3 |
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
Хм, а если у числа нечетное число цифр? А если необходимо посчитать от 11 например до 55671?
|
01.05.2008, 10:12 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
В конце останется только один
А у этого разряда нет противоположного. Здесь нужно подумать, но ИМХО д.б. просто разница между количеством для 55671 и количеством для 11. |
01.05.2008, 13:15 | #5 | ||
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
Цитата:
101 111 ... 191. {итого 9} 202 212 ... 292. {итого 9} ................................... 909 919 ... 999. {итого 9} 9*9? Цитата:
|
||
01.05.2008, 21:02 | #6 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
М..да. Вы правы, при попытке реализации все оказалось сложнее чем я предполагал.
Вот функция, которая подсчитывает количество чисел для диапазона от 00...00 до 99..99 с учетом незначащих нулей. Z задает количество десятичных знаков. Код:
getCountNumber09(4) - 1900 00000 - 99999 - 19000 000000-999999 - 271000 Думаю, идея понятна. Дальше нужно продумать как это применить для диапазона от 1 до некоторого числа. А чтобы найти количество в диапазоне можно будет найти количество от 1 до числа b, от 1 до числа a и вычесть из первого второе. Последний раз редактировалось alexBlack; 02.05.2008 в 00:48. |
02.05.2008, 10:42 | #7 |
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
Хм, Как подсчитать от 1 до 9, 99.... до любого кол-во девяток, кажется, понятно. Но, как подсчитать до какого-нибудь 67845 нет очень. Может быть, как-нибудь применить, то что, мы знаем количество от 1 до 99999?
|
02.05.2008, 12:25 | #8 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Кажется добил. Тест проходит. Правда, код еще нужно дорабатывать - убрать все лишнее, заменить integer на что-то более подходящее для диапазона 10^18...
Последний раз редактировалось alexBlack; 02.05.2008 в 17:37. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Pascal]Задача на строки случайных чисел | Alyonka_v | Помощь студентам | 4 | 28.06.2008 00:58 |
Задача на строки случайных чисел | Alyonka_v | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 27.06.2008 21:08 |
задача:Паскаль и ряд чисел Фибоначчи | SEREG@ | Помощь студентам | 20 | 16.12.2007 20:05 |
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных | Белка | Помощь студентам | 3 | 27.10.2007 11:53 |
Задача: перевод целых чисел в римские | n0x | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 12.12.2006 19:52 |