![]() |
|
Модераторы: bsa |
![]()
|
|
| gosn1ck |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
вот собственно задача
Найдите все числа, которые могут быть представлены в виде 5-х степеней составляющих их цифр. Чему равно произведение всех этих чисел? вот пример 1634 = 1(в степени 4) + 6(в степени 4) + 3(в степени 4) + 4(в степени 4), но надо для пятых. мой код
в 1ой кнопке я просто записал в файл все возможные числа из 5 цифр во 2ой для переменной temp присваиваю текущее значение числа, а temp2 идёт на персинг цифр в сумму, после персинга сравниваю и вывожу какие именно получились числа. открываю калькуляр и перемножаю 3 полученных числа (у меня подозрение что их на самом деле больше) и получию 472551890922864 - пишу это число в ответ и получаю отрицательный результат :( помогите найти ошибку? мои 3 числа - 54748, 92727, 93084 |
|||
|
||||
| IKM2007 |
|
||||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
gosn1ck, ты правильные числа нашел. Вот код, но твой метод с файлами мне не понравился. Проще так. Это печатаем числа, удовлетворяющие нашим требованиям.
А это конкретно твоя прога.
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
||||
|
|||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
Можно примерно так найти нужные числа:
|
|||
|
||||
| gosn1ck |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
IKM2007, а можно с комментировать цикл? мне этот метод тоже особо не нравится, дело в том что значение произведения вылезет за пределы unsigned long int
|
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
||||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Произведение в unsigned long int конечно не влезет.
А зачем switch у gosn1ck и Albor ? Вы думете компилятор посчитает pow() на этапе компиляции? Чтобы ускорить выполнение программы, степени нужно вычислить заранее:
|
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
Я проверил, всё считается. Конечно код не очень, т.к. на скорую руку. math64, а почему может не считаться? -------------------ПОЗЖЕ---------------------- Я Вас понял, конечно, вместо pow лучше было подставить константы. Это сообщение отредактировал(а) Albor - 22.4.2009, 16:05 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
он будет считаться, но считаться на этапе выполнение, компилятор не знает, что pow(1, 5) = 1 и всегда будет вызывать возведение в степень, а тогда смысла с switch никакого. В данном случае можно записать все степени в таблицу и посчитать их один раз.
Или так:
В этом случае компилятор посчитает степени на этапе компиляции и switch будет действительно полезен. |
|||
|
||||
| gosn1ck |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
здорово, спасибо, об этом даже не подумал.
|
|||
|
||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Результат тот же, что и у тебя. Вот нормально работающий код, не выходит за пределы.
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
gosn1ck, заменил цикл for циклом while, так легче поймешь. Еще передаю параметр в функцию по ссылке.
Это сообщение отредактировал(а) IKM2007 - 22.4.2009, 17:01 -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
IKM2007, передавая параметр по ссылке ты времени не экономишь, а наоборот больше тратишь - ссылка это фактически тот же указатель, только более удобный синтаксис, будет лишняя команда
вместо
Кроме того, у тебя больше времени уходит на вычисление степеней - зачем экономить на мелочах? |
||||
|
|||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
...
Это сообщение отредактировал(а) IKM2007 - 23.4.2009, 15:05 -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| gosn1ck |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
IKM2007, у переменной mul должен быть тип double, но вот вопрос как мне его вывести полностью в целом виде, а не 4,7e+14 ?
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |