Форум программистов, компьютерный форум CyberForum.ru

Задача на длинную арифметику - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
qqq
Сообщений: n/a
05.06.2008, 14:44     Задача на длинную арифметику #1
нужно вычислить 100! + 2^100 (2 в степени 100) и в результате сохранить все цифры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2008, 14:44     Задача на длинную арифметику
Посмотрите здесь:

динамическое программирование и длинная рафиметика(не получается прикрутить длинную арифметику). C++
Задача на адресную арифметику C++
C++ Реализовать длинную арифметику ассемблерными вставками
C++ Реализовать длинную арифметику
Округлить число не используя вещественненную арифметику C++
Как доделать длинную целочисленную арифметику? C++
C++ Библиотека классов, реализующих комплексную арифметику
C++ Переделать в длинную арифметику
C++ Задача на длинную арифметику
C++ Задача на арифметику остатков
Задача на длинную арифметику C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
05.06.2008, 15:04     Задача на длинную арифметику #2
Нужно вычислить - вычисляй. В чем вопрос-то?
qqq
Сообщений: n/a
05.06.2008, 15:51     Задача на длинную арифметику #3
прошу!
лучше всего код но можно просто подскозать как сделать, а то чето немогу понять как решить
mikityak
 Аватар для mikityak
617 / 22 / 3
Регистрация: 30.09.2007
Сообщений: 357
05.06.2008, 17:07     Задача на длинную арифметику #4
А калькулятор зачем те ?
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
05.06.2008, 21:54     Задача на длинную арифметику #5
Цитата Сообщение от qqq Посмотреть сообщение
лучше всего код но можно просто подскозать как сделать, а то чето немогу понять как решить
1. Лезешь в Гугл и ищешь класс для обработки ну оооооочень длинных целых чисел: CLongInt. То ли на CodeProject, то ли на CodeGuru.... короче, он есть
2. Подключаешь его в свой проект и устанавливаешь подходящую тебе разрядность.
3. Компилишь программу, запускаешь, пока она считает - пьешь кофе (чай, пиво, коньяк.... недостающее добавить по вкусу).
4. Радуешься полученному результату!

Вот результат расчета чисел Хэмминга:
(как, вы не знаете, что это такое? Гугл и Википедия вам в помощь.)
100000-th number is:
290142196707511001929482240000000000000
Execution time: 1 second.

1000000-th number is:
519312780448388736089589843750000000000000000000000000000000000000000000000000000000
Execution time: 7 seconds.

10000000-th number is:
1624410506383043182323921531175957503510853882059664086333567248332521160136820981279015541076660156
2500000000000000000000000000000000000000000000000000000000000000000000000000000000
Execution time: 133 seconds.

100000000-th number is:
1814014330961136353295334243069335458466963503370909792946250536671403515659313581838046786605422296
4635144914854949550271375442721368122191972041094311075107507067573147191502194201568268202614781694
6818595136490836162942005416114894699679995595053651728120955680200739341006998503970330059031581136
91518456912149989919601385875227049401605594538145621585911726469930727034807205200195312500
Execution time: 2786 seconds.

Celeron 2.4 512 Mb RAM, Win XP SP2.
Компилятор MSVC++ 7.1 (2003).
В общем, после подсчета стомиллионного числа за 46 минут мой энтузиазм стал потихоньку улетучиваться, ибо грубая прикидка показывает, что шагнуть еще на порядок до миллиарда можно, но придется уже очень-очень изрядно запастись терпением - часиков этак на двадцать... Короче, если есть энтузиасты - дерзайте! Задача решаемая. Я же пока пас....
gostt
Сообщений: n/a
05.06.2008, 22:42     Задача на длинную арифметику #6
вот така можно вычислить 100!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    int i,k,n=200a,[200];
for (i=0;i<n; i++ ) 
      a[i]=0; 
   a[0]=1;
   for(k=0; k<100;k++)
   {  for (i=0;i<n; i++)
       a[i]*=(k+1);
       for (i=0;i<n; i++)     
       {  a[i+2]+=(a[i]/100);
           a[i+1]+=(a[i]%100/10);
           a[i]%=10;
       }
   }
for (i=0;i<n; i++)
cout<<a[n-i-1];
Yandex
Объявления
05.06.2008, 22:42     Задача на длинную арифметику
Ответ Создать тему
Опции темы

Текущее время: 07:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru