Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Факториалы - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин  
Факториалы
MCH Дата: Суббота, 10.11.2012, 18:27 | Сообщение № 1
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Чтобы макрописатели не скучали в данной ветке, предлагаю задачу:

Необходимо вычислить 200! (факториал двухсот)
Нужно получить все 375 значащих цифр

Данную задучу удобнее решать на VBA но и формулами ее можно решить, правда придется задействовать много ячеек
 
Ответить
СообщениеЧтобы макрописатели не скучали в данной ветке, предлагаю задачу:

Необходимо вычислить 200! (факториал двухсот)
Нужно получить все 375 значащих цифр

Данную задучу удобнее решать на VBA но и формулами ее можно решить, правда придется задействовать много ячеек

Автор - MCH
Дата добавления - 10.11.2012 в 18:27
MCH Дата: Воскресенье, 11.11.2012, 20:19 | Сообщение № 21
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Quote (Serge_007)
Могу сразу на сайт выложить, если оформишь красиво

Пока рано, я еще не все реализовал что хотел
 
Ответить
Сообщение
Quote (Serge_007)
Могу сразу на сайт выложить, если оформишь красиво

Пока рано, я еще не все реализовал что хотел

Автор - MCH
Дата добавления - 11.11.2012 в 20:19
ikki Дата: Воскресенье, 11.11.2012, 20:20 | Сообщение № 22
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
ээээ.... Сергей, а оформление какими средствами?
(лихорадочно думает, как бы отмазаться)
html я не знаю sad
или что-то другое имеется в виду?

кроме того, я чуть поторопился - Михаил обещал еще квадратный корень добавить smile
и, кстати, добавлю, если и не совет для Михаила, то просто имхо: хорошо бы эту библиотечку реализовать через модуль класса.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеээээ.... Сергей, а оформление какими средствами?
(лихорадочно думает, как бы отмазаться)
html я не знаю sad
или что-то другое имеется в виду?

кроме того, я чуть поторопился - Михаил обещал еще квадратный корень добавить smile
и, кстати, добавлю, если и не совет для Михаила, то просто имхо: хорошо бы эту библиотечку реализовать через модуль класса.

Автор - ikki
Дата добавления - 11.11.2012 в 20:20
Serge_007 Дата: Воскресенье, 11.11.2012, 20:37 | Сообщение № 23
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (ikki)
или что-то другое имеется в виду?

Ну да, другое smile
Если оформить в виде статьи - то требуется только текст и файлик Excel
Остальное - с меня smile


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (ikki)
или что-то другое имеется в виду?

Ну да, другое smile
Если оформить в виде статьи - то требуется только текст и файлик Excel
Остальное - с меня smile

Автор - Serge_007
Дата добавления - 11.11.2012 в 20:37
ikki Дата: Воскресенье, 11.11.2012, 20:47 | Сообщение № 24
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
а-а, тогда согласен.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеа-а, тогда согласен.

Автор - ikki
Дата добавления - 11.11.2012 в 20:47
MCH Дата: Воскресенье, 11.11.2012, 22:27 | Сообщение № 25
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

А почему формулисты молчат? на формулах задача тоже решается
 
Ответить
СообщениеА почему формулисты молчат? на формулах задача тоже решается

Автор - MCH
Дата добавления - 11.11.2012 в 22:27
ZORRO2005 Дата: Понедельник, 12.11.2012, 01:04 | Сообщение № 26
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
Quote (MCH)
А почему формулисты молчат? на формулах задача тоже решается

Давай подсказку.
 
Ответить
Сообщение
Quote (MCH)
А почему формулисты молчат? на формулах задача тоже решается

Давай подсказку.

Автор - ZORRO2005
Дата добавления - 12.11.2012 в 01:04
MCH Дата: Понедельник, 12.11.2012, 01:28 | Сообщение № 27
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Quote (ZORRO2005)
Давай подсказку.

Сергей, какая может быть подсказка? методики уже все расписаны
Умножение столбиком
Использование множества ячеек
Конкатенация

Задачку решил задействовав 200 строк и не более 100 столбцов (см. вложение)
Т.к. файл получился большим, пришлось удалить часть расчетов
К сообщению приложен файл: Factorial.rar (94.9 Kb)
 
Ответить
Сообщение
Quote (ZORRO2005)
Давай подсказку.

Сергей, какая может быть подсказка? методики уже все расписаны
Умножение столбиком
Использование множества ячеек
Конкатенация

Задачку решил задействовав 200 строк и не более 100 столбцов (см. вложение)
Т.к. файл получился большим, пришлось удалить часть расчетов

Автор - MCH
Дата добавления - 12.11.2012 в 01:28
MCH Дата: Понедельник, 12.11.2012, 03:52 | Сообщение № 28
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

еще вариант макроса, относительно быстрый, правда с выводом не заморачивался
можно даже посчитать 10000! необходимо только размер массива увеличить:



Сообщение отредактировал MCH - Понедельник, 12.11.2012, 03:55
 
Ответить
Сообщениееще вариант макроса, относительно быстрый, правда с выводом не заморачивался
можно даже посчитать 10000! необходимо только размер массива увеличить:


Автор - MCH
Дата добавления - 12.11.2012 в 03:52
ZORRO2005 Дата: Понедельник, 12.11.2012, 11:52 | Сообщение № 29
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
Quote (MCH)
Сергей, какая может быть подсказка?

Такая: ОСТАТ()

Я же формулист и в код макроса не посмотрел...MOD не увидел


Сообщение отредактировал ZORRO2005 - Понедельник, 12.11.2012, 11:55
 
Ответить
Сообщение
Quote (MCH)
Сергей, какая может быть подсказка?

Такая: ОСТАТ()

Я же формулист и в код макроса не посмотрел...MOD не увидел

Автор - ZORRO2005
Дата добавления - 12.11.2012 в 11:52
MCH Дата: Понедельник, 12.11.2012, 18:22 | Сообщение № 30
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Немного изменил длинную арифметику, добавил в тип данных длину числа, теперь стало считать значительно быстрее
Что очень заметно на задаче о счастливых билетах
К сообщению приложен файл: LongNum2.xls (84.0 Kb)
 
Ответить
СообщениеНемного изменил длинную арифметику, добавил в тип данных длину числа, теперь стало считать значительно быстрее
Что очень заметно на задаче о счастливых билетах

Автор - MCH
Дата добавления - 12.11.2012 в 18:22
MCH Дата: Понедельник, 08.04.2024, 15:11 | Сообщение № 31
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Немного изменил длинную арифметику, добавил в тип данных длину числа, теперь стало считать значительно быстрее
Что очень заметно на задаче о счастливых билетах

Как же сложно реализуется длинная арифметика на VBA
В частности, "задача о счастливых билетах" из предыдущего поста можно переписать на Python, где длинная арифметика встроена, решение относительно короткое:
[vba]
Код
n = int(input()) // 2 # число знаков в каждой подгруппе
max_sum = 9 * n # максимально возможная сумма цифр
array = [1] + [0] * max_sum # массив для динамического программирования, стартовое значение
for _ in range(n):
    new_array = [1] + [0] * max_sum
    for i in range(max_sum):
        new_array[i + 1] = new_array[i] + array[i + 1] # определяем новое значение массива
        if i >= 9:
            new_array[i + 1] -= array[i - 9]
    array = new_array.copy()        
print(sum(i * i for i in array))
[/vba]
PS: задача взята с сайта ACMP задача № 100
Первая задача, которую я решил на этом сайте (прошло уже почти 12 лет)
Решение на бейсике, включая длинную арифметику, занимает 130 срок кода и почти 2000 символов (без учета пробелов), что более чем в 10 раз больше решения на питоне
 
Ответить
Сообщение
Немного изменил длинную арифметику, добавил в тип данных длину числа, теперь стало считать значительно быстрее
Что очень заметно на задаче о счастливых билетах

Как же сложно реализуется длинная арифметика на VBA
В частности, "задача о счастливых билетах" из предыдущего поста можно переписать на Python, где длинная арифметика встроена, решение относительно короткое:
[vba]
Код
n = int(input()) // 2 # число знаков в каждой подгруппе
max_sum = 9 * n # максимально возможная сумма цифр
array = [1] + [0] * max_sum # массив для динамического программирования, стартовое значение
for _ in range(n):
    new_array = [1] + [0] * max_sum
    for i in range(max_sum):
        new_array[i + 1] = new_array[i] + array[i + 1] # определяем новое значение массива
        if i >= 9:
            new_array[i + 1] -= array[i - 9]
    array = new_array.copy()        
print(sum(i * i for i in array))
[/vba]
PS: задача взята с сайта ACMP задача № 100
Первая задача, которую я решил на этом сайте (прошло уже почти 12 лет)
Решение на бейсике, включая длинную арифметику, занимает 130 срок кода и почти 2000 символов (без учета пробелов), что более чем в 10 раз больше решения на питоне

Автор - MCH
Дата добавления - 08.04.2024 в 15:11
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!