Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 14:45   #51
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Попробуйте это:
Цитата:
можно находить позицию самой левой единицы в числе и пропускать соответствующее число чисел, нарастив счётчик на их количество.
Так время сократится.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.02.2011, 15:38   #52
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Цитата:
Мне кажется, что я знаю как можно построить вычисление достаточно быстро. но нечестно!
достаточно посчитать, сколько чисел в диапазонах десяток, сотен, тысяч и т.д. т.е. 10^I
сохранить эти значения, а потом использовать их в вычислениях. вроде бы там получается не очень сложно...
я именно на эту тему и думаю.Еще хочу понять, как можно раздробить цыфру.
скажите мне пожалуйста сколько будет для
10000
100000
1000000
10000000
100000000
1000000000
Акоб вне форума Ответить с цитированием
Старый 02.02.2011, 15:40   #53
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

выше давали решение в лоб, посчитай
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.02.2011, 15:47   #54
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

он у меня не компелируется.
Акоб вне форума Ответить с цитированием
Старый 02.02.2011, 15:52   #55
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Вот это не компилируется?
Код:
#include <iostream>

inline bool valueContainsOne(int n)
{
    do {
        if (n % 10 == 1) {
            return true;
        }
    } while (n /= 10);
    return false;
}

int main()
{
    int x;
    do {
        std::cout << "Enter fucking positive number: ";
        std::cin >> x;
    } while (x < 1);
    int result = 0;
    for (; x >= 1; --x) {
        if (valueContainsOne(x)) {
            ++result;
        }
    }
    std::cout << "Your answer is " << result << ", dumbass." << std::endl;
}
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.02.2011, 15:56   #56
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

N= 10 комбинаций : 2
N= 100 комбинаций : 20
N= 1000 комбинаций : 272
N= 10000 комбинаций : 3440
N= 100000 комбинаций : 40952
N= 1000000 комбинаций : 468560
N= 10000000 комбинаций : 5217032
N= 100000000 комбинаций : 56953280
N= 1000000000 комбинаций : 612579512
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2011, 16:09   #57
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Я нашел окончательный алгоритм! =) "Без пробелов"
boomeer вне форума Ответить с цитированием
Старый 02.02.2011, 16:26   #58
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я нашел окончательный алгоритм! =) "Без пробелов"
я в Вас верил!
ну-ка, делитесь!
(пока я вижу решение только на основании Вашей предыдущей формулы) + проверка, если в исходном числе есть 1-ца - то вызываем рекуренто данную формулу с тем "остатком", который идёт после единицы...

Расскажите, к чему Вы пришли.

ну, и если это не секрет и сильно Вас не затруднит - расскажите, как Вы вообще сумели вывести формулу?!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2011, 16:31   #59
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я в Вас верил!
ну-ка, делитесь!
(пока я вижу решение только на основании Вашей предыдущей формулы) + проверка, если в исходном числе есть 1-ца - то вызываем рекуренто данную формулу с тем "остатком", который идёт после единицы...

Расскажите, к чему Вы пришли.

ну, и если это не секрет и сильно Вас не затруднит - расскажите, как Вы вообще сумели вывести формулу?!!
Итак. Окончательная формула такова: Пробегаемся по разрядам числа. Если число больше 1 то вычитаем из него 1 и умножаем это число на 9^разряд числа. Так бежим либо до конца, либо пока не встретим единичку. Встретили - значит это последнее число. Складываем все эти цифры. Теперь из n+1 вычитаем эту сумму. Все.

Относительно последней цифры: Если были цифры 1 до сих пор, мы включаем последнюю цифру, и добавляем 1, если это 0. Таким образом добавляем 4 для 5394, 1 для 5390, ничего для 5216,но добавляем 1 для 5391.

Пусть n=31874, тогда 2*9^4+1*9^3=13851, 31874+1-13851=18024
Это подтверждает решение в лоб

А как вывел... начал считать что 1 это все кроме 0,2...9. Так начал отнимать 1. Потом перешел в 9тиричную систему... Как то так. (может бред, но работает! =) )

Последний раз редактировалось boomeer; 02.02.2011 в 16:42.
boomeer вне форума Ответить с цитированием
Старый 02.02.2011, 16:35   #60
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

попробуйте сделать тест от 1 до 10^9, решение в лоб vs ваш алгоритм. Что-то мне не оч верится в правильность вашего =)
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчитать количество слов, в которые входит символ "е" Zhasik Паскаль, Turbo Pascal, PascalABC.NET 3 27.12.2010 10:29
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04