Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/28: Рейтинг темы: голосов - 28, средняя оценка - 4.68
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
1

Возвести число в 7000 степень

29.04.2010, 14:06. Просмотров 5625. Ответов 11
Метки нет (Все метки)

Сегодня был на олимпиаде. Проверка была через contester, в задачи есть место где нужно возвести число в степень.
Никак работать не хотела. Потом увидел тесты. Там 9 возводилась в 7000.
ЭТО ЖЕ КАКОЙ НАДО ТИПА ДАННЫХ ЧТО-БЫ ЭТО СДЕЛАТЬ ЧЕРЕЗ ОБЫЧНЫЙ POW()???
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2010, 14:06
Ответы с готовыми решениями:

Как возвести дробное число в целую степень? К примеру 2,7 возвести в степень 2 на C++.
Как возвести дробное число в целую степень? К примеру 2,7 возвести в степень 2 на C++.

Если введенное число отрицательное и четное, то возвести его в 3 степень, иначе возвести в квадрат
Ввести целое число В. Если В отрицательное и четное, то возвести его в 3 степень, иначе возвести в...

Возвести число в степень
Дано натуральное n. Написать программу вычисления a^n("а" в степени n)

Возвести число в (7) семизначную степень
Подскажите пожалуйста, как можно реализовать данную функцию? К примеру необходимо число 2 возвести...

11
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
29.04.2010, 14:20 2
Цитата Сообщение от BOR1K Посмотреть сообщение
ЭТО ЖЕ КАКОЙ НАДО ТИПА ДАННЫХ ЧТО-БЫ ЭТО СДЕЛАТЬ ЧЕРЕЗ ОБЫЧНЫЙ POW()???
А с чего ты взял, что вычисляют через обычный POW()

Как вариант long long long long ... double pow(double, double)
0
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,283
29.04.2010, 14:20 3
используйте массив
0
1 / 1 / 0
Регистрация: 07.06.2009
Сообщений: 11
29.04.2010, 14:37 4
Цитата Сообщение от FireNovel Посмотреть сообщение
А с чего ты взял, что вычисляют через обычный POW()

Как вариант long long long long ... double pow(double, double)
Дык, это вдеь еще и заранее надо посчитать какого объема массив создавать
0
Эксперт JavaЭксперт С++
8360 / 3581 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
29.04.2010, 14:52 5
BOR1K, можете переделать под свои надобности Найти, на сколько нулей оканчивается число N
0
Evg
Эксперт CАвтор FAQ
21130 / 8146 / 628
Регистрация: 30.03.2009
Сообщений: 22,459
Записей в блоге: 30
29.04.2010, 16:10 6
Самый простой вариант в техническом исполнении - все числа представлять в виде строк, все операции выполнять в виде строк (столбиком). С делением при таком подходе нужно будет повозиться, но сложение, вычитание и умножение делаются несложно. Понятно, что такой способ более медленный, чем общепринятые способы представления длинных чисел. Но тут по крайней мере понятно и не надо заморачиваться дополнительными проблемами перевода числа в десятичную систему счисления (надо же хоть в каком-то виже напечатать результат)
0
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
29.04.2010, 17:14  [ТС] 7
Лимит времени 3000 мс. Лимит памяти 65000Кб.

Добавлено через 25 секунд
Лимит времени 3000 мс. Лимит памяти 65000Кб.
Автор: Фёдор Меньшиков, ВГПУ. Сложность Альфа

Для натуральных чисел a и n вычислить an.

Ввод
В первой строке находятся разделённые пробелом a и n.
Вывод
Выводится одно число - результат без стоящих впереди нулей, стоящих впереди и позади пробелов.
Ограничения
1 ≤ a ≤ 9; 1 ≤ n ≤ 7000.

Ввод 1 Ввод 2
3 20
5 50
Вывод 1 Вывод 2
3486784401
88817841970012523233890533447265625
0
Evg
Эксперт CАвтор FAQ
21130 / 8146 / 628
Регистрация: 30.03.2009
Сообщений: 22,459
Записей в блоге: 30
29.04.2010, 17:16 8
Цитата Сообщение от BOR1K Посмотреть сообщение
Лимит времени 3000 мс
Без знаний частоты процессора говорит мало о чём, но для строкового представления скорее всего в такие лимиты по времени не уложиться. Я так понимаю, что это всё-таки 3 секунды. Хотя фиг знает...
0
2 / 2 / 0
Регистрация: 01.08.2009
Сообщений: 16
29.04.2010, 17:39 9
В задаче с возведением в степень в качестве яйчейки для хранения большого числа можно использовать структуру с полем большой длины. И да, там можно задавать длину полей в байтах
0
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
29.04.2010, 17:43  [ТС] 10
Имхо ничего выдумывать не надо, другие ее решили за 5 минут, причем я тоже, но других она прошла тесты, вроде как они не си писали, но блин, не может такого быть((
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
29.04.2010, 17:47 11
Лучший ответ Сообщение было отмечено как решение

Решение

Почему же не уложиться? Конечно, способ "в лоб" с тупым накручиванием цикла типа for(int i = 0; i < 7000; ++i) ... может и не уложиться - на это и расчет. А если вспомнить школьную алгебру и посчитать как (((9 ^ 7) ^ 10) ^ 10) ^ 10 (здесь ^ - возведение в степень), то получится уже существенно быстрее.
А если взять алгоритм быстрого возведения в степень, то там потребуется всего 18 умножений - это уже вполне приемлемо за указанное время. У меня, например, по алгоритму быстрого возведения в степень, на PIV 3 ГГц эта самая 9^7000 считается всего за 31 мс - почти в сто раз быстрее, чем требуется в тесте :-)
4
Evg
Эксперт CАвтор FAQ
21130 / 8146 / 628
Регистрация: 30.03.2009
Сообщений: 22,459
Записей в блоге: 30
29.04.2010, 17:48 12
CheshireCat, во! Вот были какие-то подозрения, что копать надо в этом направлении, но что-то не додумался
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2010, 17:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Возвести число в степень(дробную)
В соседней теме помог сделать возведение в целочисленную степень и вот стало интересно, но что-то...

Возвести число y в степень 2000
Помогите пожалуйста Нужно как-то придумать как возвести число y в степень 2000 на с++ уже не знаю...

Как возвести число в степень
Как возвести число в степень ???

Возвести число в a степень 7 за 4 операций
Нужно использовать только операцию умножения #include &lt;iostream&gt; using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.