![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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) У кого какие предложения?
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
По моему можно рассуждать так:
берем число x----------------x Для крайних рахрядов этого числа, как уже было замечено, 9 вариантов y--------------y Берем внутреннюю последовательность. Для ее крайних разрядов уже 10 вариантов (добавляется 0). Эти варианты могут быть с любыми цифрами слева и справа (кроме левого нуля). Итого 9 (от предыдущей) + 9*10*10 (если не ошибаюсь). И так далее для внутренних последовательностей. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
![]()
Хм, а если у числа нечетное число цифр? А если необходимо посчитать от 11 например до 55671?
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
В конце останется только один
![]() А у этого разряда нет противоположного. Здесь нужно подумать, но ИМХО д.б. просто разница между количеством для 55671 и количеством для 11. |
![]() |
![]() |
![]() |
#5 | ||
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
![]() Цитата:
101 111 ... 191. {итого 9} 202 212 ... 292. {итого 9} ................................... 909 919 ... 999. {итого 9} 9*9? Цитата:
|
||
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 16.01.2008
Сообщений: 288
|
![]()
Хм, Как подсчитать от 1 до 9, 99.... до любого кол-во девяток, кажется, понятно. Но, как подсчитать до какого-нибудь 67845 нет очень. Может быть, как-нибудь применить, то что, мы знаем количество от 1 до 99999?
|
![]() |
![]() |
![]() |
#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 |