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

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

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

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

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

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

формулу не я вывел, а форумчанин dikiy с ЛОРа, вот объяснение от gunja там же
Цитата:
в каждой позиции может быть одно из 10 символов. 0..9

всего значит в N позициях может быть 10^N вариантов.

и мы знаем, что в позиции может быть или 1 или оставшиеся 9 символов.

размещая в N ячейках какой-либо из 9 символов, у нас будет 9^N комбинаций. значит разница между одним набором и другим такая, что в оставшихся вариантах будет присутствовать 10-ый символ.

10^N - 9^N в результате. чтобы не перегружать машины, можно вычислять экспоненциально (хотя толку от этого мало).

exp( n ln(10)) = exp ( ln (10^N)) = 10 ^N.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 03.02.2011, 21:52   #152
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

получается, что я могу вместо своего буффера где сохронены цыфры 10^n,вставить формулу 10^n - 9^n и это будет не подгонка а алгоритм))

bommer,хороший ты человек))))))))))))))

Последний раз редактировалось Акоб; 03.02.2011 в 22:02.
Акоб вне форума Ответить с цитированием
Старый 03.02.2011, 22:10   #153
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Код:
#include<iostream.h>

int stepen10(int);
int stepen9(int);

int main()
{
	
	int N,j,h = 0,n = 0;
	cin>>N;

	j = N;
	
	while(j >= 1)
	{
		j = j / 10;
		h++;
	}


	j = N;
	j = j / stepen10(h - 1);

	if(h == 1)
	{
		n = 1;
		cout<<n<<endl;
		return 0;
	}
	
	while(h != 0) 
	{
		if(j == 1)
		{
			if(N % stepen10(h - 1) == 0)
			{
				n = n + stepen10(h - 1) - stepen9(h - 1) + 1;
				cout<<n<<endl;
				return 0;
			}
				
			n = n + (N % stepen10(h - 1)) + stepen9(h - 1) - stepen10(h - 2) + 1;
			cout<<n<<endl;
			return 0;
		}
		else 
		{
			if( j != 0 )
			{
				n = n + (j - 1) * (stepen10(h - 1) - stepen9(h - 1)) + stepen10(h - 1);
			}
		}

		N = N % stepen10(h - 1);
		j = N;
		h--;

		j = j / stepen10(h - 1);
	}

	cout<<n<<endl;

	return 0;
}

int stepen10( int x )
{
	int s = 1;
	for(; x >= 1; x--)
		{
			s = s * 10;
		}
	return s;
}


int stepen9( int x )
{
	int s = 1;
	for(; x >= 1; x--)
		{
			s = s * 9;
		}
	return s;
}
вот и все))
какие будут идеи на счет задачи где нужно найти количество всех едениц?

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

Что за форум ЛОР?
boomeer вне форума Ответить с цитированием
Старый 04.02.2011, 01:27   #155
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

linux.org.ru же
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


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