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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 22:52   #41
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от boomeer
Тут я. Но последний раз за сегодня =)
Придумал такое решение.
От каждой цифры числа, кроме числа единиц, которая больше 1 отнимаем 1. Умножаем это число на 9. Складываем все + число единиц числа. Теперь от n+1 отнимем это число. Вуаля.
n=29 таким образом 1*9 + 9 = 18. Вычтите из n+1, и получаем 12
5394=9*9*9*4+2*9*9+8*9+4=5395-3154=2241
для 100: 1*9*9=81; 101-81=20
Писал сумбурно, если что завтра поясню как решал)
Здорово! Непонятно, как Вы пришли к такому решению - но оно вроде бы работает!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2011, 22:56   #42
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

ещё можно находить позицию самой левой единицы в числе и пропускать соответствующее число чисел, нарастив счётчик на их количество.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 01.02.2011, 22:59   #43
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
Этот расчёт мой комп делает за 100 секунд.
Результат 80000000.
для числа
100000000
правильный ответ 56 953 280

и "лобовой" алгоритм (пост #32) его находит за 5 секунд

Код:
56953280

real	0m5.785s
user	0m5.260s
sys	0m0.216s
Цитата:
Сообщение от boomeer...
тоже не очень понял =)

Последний раз редактировалось NiCola999; 01.02.2011 в 23:01.
NiCola999 вне форума Ответить с цитированием
Старый 01.02.2011, 23:13   #44
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
для числа
100000000
правильный ответ 56 953 280
угу. согласен.
и по формуле boomeer тоже работает:
100000001 - 9*9*9*9*9*9*9*9 = 56953280
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2011, 23:55   #45
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Хорошо.

Проверим на алгоритме из поста 32
для 100 = 20
для 200 = 119
для 1000 = 272
Как мы видим, идёт накопление ошибки в сторону уменьшения.
Теперь посчитаем вручную:
Изображения
Тип файла: jpg Tabl.jpg (52.0 Кб, 65 просмотров)
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 02.02.2011 в 00:12.
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.02.2011, 01:03   #46
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

нука, а если через файлы
Код:
#include <fstream>
#include <iostream>

unsigned long Schet(unsigned long &N);
{
	ofstream out("numbers.txt");
	for (unsigned long i=1;i<=n;i++)
		out<<i;
	out.close();
	unsigned long s=0;
	ifstream input("numbers.txt");
	while(!(input.eof()))
		(input.get()==49)?s++:0;
	return s;
}

int main(){
unsigned long N;
cout<<"Введите N";
 cin>>N;
cout<<Schet(N);
}
а, как считать скорость выполнения программы?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 02.02.2011 в 01:27.
kaljan775 вне форума Ответить с цитированием
Старый 02.02.2011, 08:42   #47
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Не, через файлы ещё медленнее получается.
Я выложил более детальную таблицу для проработки.
Кому интересно посмотрите. Кстати, мой "лобовой" алгоритм (пост 41), хоть и не самй шустрый, но зато работоспособный. Работает в любом диапазоне чисел.
Его можно использовать как проверочный для нахождения математической формулы. К сожелению я не математик, а аналитик (есть разница), так что дерзайте.
Вложения
Тип файла: rar табл.rar (3.9 Кб, 5 просмотров)
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.02.2011, 09:00   #48
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Моя формула провалилась... Например для 16 выдает 2
boomeer вне форума Ответить с цитированием
Старый 02.02.2011, 09:01   #49
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Smitt&Wesson, что-то не могу врубится, а что даёт выложенная Вами таблица? Поясните, пожалуйста... Или это просто набор исходных данных для дальнейшего анализа? Но тогда зачем подсчёт и суммирование количества чисел?
Цитата:
Как мы видим, идёт накопление ошибки в сторону уменьшения.
и это поясните, пожалуйста.. Какое накопление, какой ошибки?...


Цитата:
Сообщение от boomeer
Моя формула провалилась... Например для 16 выдает 2
ну вот... а я так в неё верил..
тогда расскажите, как Вы к ней пришли?..


кстати, по поводу формул.
Мне кажется, что я знаю как можно построить вычисление достаточно быстро. но нечестно!
достаточно посчитать, сколько чисел в диапазонах десяток, сотен, тысяч и т.д. т.е. 10^I
сохранить эти значения, а потом использовать их в вычислениях. вроде бы там получается не очень сложно...

Последний раз редактировалось Serge_Bliznykov; 02.02.2011 в 09:07.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2011, 12:48   #50
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Sorry for english but i'm writing from mobile. I add a new rule. If you encounter a 1 you do the count for that digit (rest to the power of 9) but then are finished.
boomeer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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