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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2010, 20:56   #1
yardie
 
Регистрация: 30.08.2010
Сообщений: 7
По умолчанию N>=a в степени K

вот решил задачу таким образом:
задача:
Напишите программу, находящую для заданных числел n и k максимальное число a, такое, что ak≤ n

решение:
#include <iostream>
#include <cmath>
using namespace std;

void main()
{
double n,a,k;
cin >> n;
cin >>k;

for ( a=n-1; a; a--)



if (n>=pow(a,k))

{
cout << a;
break;
}
cin.get();
cin.get();

}
можно ли решить без заголовка <cmath>???
или максимально упростить программу?
yardie вне форума Ответить с цитированием
Старый 30.08.2010, 21:26   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Не надо было математику в школе прогуливать )
Код:
a = pow(n, 1 / k);
Или, если целое a,
Код:
a = ceil(pow(n, 1 / k));
Somebody вне форума Ответить с цитированием
Старый 30.08.2010, 21:42   #3
yardie
 
Регистрация: 30.08.2010
Сообщений: 7
По умолчанию

а как без " pow " решить, вот ни как не догоняю

Последний раз редактировалось yardie; 30.08.2010 в 21:48.
yardie вне форума Ответить с цитированием
Старый 30.08.2010, 21:55   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Если нельзя использовать <cmath> то можно реализовать свою версию функции pow
Код:
double pow(double ch, int st)
{
double res = 1.0;
for(int i = 0; i < st; i++)
res *= ch;
return res;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 30.08.2010, 22:44   #5
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Код:
double m_pow(double x, double y)
{
	
	if (y < 1) {
		double n = 1 / y;
		size_t count = 0;
		while (n <= x) {
			n *= 1 / y;
			++count;
		}
		return count;
	}
	else {
		double t = 1.0;
		for (int i = 0; i < y; ++i) {
			t *= x; 
		}
		return t;
	}
	
}

int main(int argc, char* argv[])
{
	double n = 16;
	double k = 2;
	double a;

	cout << (a = m_pow(n, 1 / k)) << endl;
	return 0;
}
include <Qt>

Последний раз редактировалось sever-42; 30.08.2010 в 23:41.
sever-42 вне форума Ответить с цитированием
Старый 31.08.2010, 14:52   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Если целое, там не ceil, а floor.
Цитата:
Код:
	if (y < 1) {
		double n = 1 / y;
		size_t count = 0;
		while (n <= x) {
			n *= 1 / y;
			++count;
		}
		return count;
(25; 0.5) => 4.
Это же вроде не x^y, а ⌊log(1/y; x))⌋?

Последний раз редактировалось Somebody; 31.08.2010 в 14:57.
Somebody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal Степени Vkusnjashka Помощь студентам 4 17.01.2010 16:04
х в степени н anksunamun Помощь студентам 10 24.11.2009 00:31
Поднесение к степени Halifath Помощь студентам 7 02.09.2009 09:45
C# - корень 3 степени TaTT DoGG Общие вопросы .NET 4 26.09.2008 21:53
Число в степени vItal87ka Паскаль, Turbo Pascal, PascalABC.NET 12 12.01.2008 08:21