Mcray
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
|
||||||
#1 | ||||||
Как дорешать задачу? - C++11.04.2012, 17:02. Просмотров 391. Ответов 6
Метки нет Все метки)
(
«Найди серединку»
Вводятся натуральные числа - А и В (А<В), которые не превышают 100000000. Найти число Х – середину ряда, состоящего из всех цифр из чисел от А до В записанных подряд, для этого нужно: записать подряд все числа от А до В (включительно), найти в полученном ряду цифру или число из двух цифр (это зависит от четности или нечетности количества цифр в ряду), стоящие ровно посредине ряда. (Пример: для А=98, В=103, в ряду от 98 до 103 будет записано 16 цифр, средними (8-й и 9-й) цифрами будут 10 ). Ввод: число К. Вывод: ответ. Пример: Ввод: 98 я нахожу число в котором и будет искомая моя серединка , но не могу её выделить чтобы вывести. Даже и незнаю как нужно делать... Помогите очень надо решить уже второй месяц и никак не получается...
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
11.04.2012, 17:02 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как дорешать задачу? (C++):
6
как изобразить декартову систему координат ?немогу дорешать задачку - C++ указатели с++, дорешать) - C++ Задачка на динамический список. Помогите дорешать - C++ Вычислить функцию f(x), используя ее разложение в степенной ряд (дорешать) - C++ как написать задачу в си - C++
|
voral
551 / 535 / 96
Регистрация: 16.03.2008
Сообщений: 2,483
|
|
11.04.2012, 17:39 | #2 |
Примерный алгоритм:
1. создаем массив char* line; 2. В него заносим цифры от А до Б т.е. для вашего пример line[0]='9'; line[1]='8'; ..... line[n-2]='1';line[n-1]='0';line[n]-'3'; 3. Работаем с индексами и размерностями. Делим размер полчившегося массиыва пополам. И в зависимости от четности / нечетности выдаем два или один элемент по индексу.
0
|
Mcray
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
|
|
12.04.2012, 09:08 [ТС] | #3 |
А мне нужно чтобы без массивов как то и я из-за этого и незнаю как(
0
|
voral
551 / 535 / 96
Регистрация: 16.03.2008
Сообщений: 2,483
|
||||||
12.04.2012, 09:32 | #4 | |||||
хм.
вчера чего то не подумал - с массивом тоже будет не красиво: памяти сожрет если задать 1 и 100000000. А так может даст толчок: 1. их может быть два 2. Выделяем каждую цифру из числа
0
|
Mcray
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
|
|
12.04.2012, 10:13 [ТС] | #5 |
Да их может быть 2 если числа одной размерности и четные.
И вот эта середина по числам качет когда разные варианты и не могу определить закономерность или как там можно сделать вообще нет идей(.
0
|
voral
551 / 535 / 96
Регистрация: 16.03.2008
Сообщений: 2,483
|
||||||
12.04.2012, 11:10 | #6 | |||||
Тогда так. Начинаем с нулевых значений:
1. Добавляем очередное число (от А до Б включительно) (пример: 96) 1.1. Узнаем его длинну (2). Прибавляем к общей (0). (= 2) 1.2 Делим общую длинну пополам и выясняем что надо хранить два числа. 1.3 Делим длинну слова пополам и выясняем на сколько сдвигаются индексы (положение нужной цифры в сохранном числе) 1.4. Если оба индекса больше длинны сохранного ранее числа то увеличиваем сохранное число на 1 (если это первая итерация просто сохранеям А) и пересчитываем индексы 1.5. Запоминаем первое число содержащее искомые цифры(96) И так повторяем для каждого числа. После всего этого. Берем по сохраненым индексам из сохраненного числа цифры. Если второй индекс больше длинны числа то к сохранному числу прибавляем единицу и берем из него первую цифру Добавлено через 7 минут Кстати, в общем то вам можно запоминать только первый индекс и первой число. А необходимость вывода второй цифры и ее расположение вычислять уже в самом конце:
1
|
Mcray
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
|
|
12.04.2012, 11:23 [ТС] | #7 |
Честно сказать немогу понять как это использовать в коде (
0
|
12.04.2012, 11:23 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
12.04.2012, 11:23 |
Привет! Вот еще темы с ответами:
7
Как решить задачу? - C++ Как выполнить данную задачу на с++ ? - C++ как cделать простую задачу на С++ - C++ Как сделать задачу в С++. Список дежурных - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |