wielkie liczby

0

witam jak zadeklarowac liczbe o rozmiarze 10^2500

1

Zależy co z nią robisz. Jeśli zamierzasz ją tylko dzielić czy mnożyć przez podobne liczby, to najlepiej zapisać ją w postaci takiej jak masz daną:

struct LiczbaDoPotegi
{
  int liczba;
  int potega;
};

vector<LiczbaDoPotegi> iloczynLiczbDoPotegi;

Jak jeszcze założysz, że liczba jest pierwsza i potęga może być ujemna i np. będziesz trzymał vector posortowany po liczbach to można ją całkiem łatwo mnożyć/dzielić przez liczby całkowite.

Jeśli generalnie nie obchodzi Cię aż tak mocno wydajność, a obchodzi Cię łatwość obsługi to skorzystaj z:
https://mattmccutchen.net/bigint/
lub
http://sourceforge.net/projects/cpp-bigint/
lub czegoś innego.

Te klasy raczej są dość szybkie (nie patrzyłem w implementacje), aczkolwiek specjalizowane rozwiązania są z reguły szybsze niż ogólne.

Zasada jest taka: nim mniej musisz robić z danymi wejściowymi tym lepiej

0

long double x; - z tym że przeczytaj to co napisał wyżej @krwq, bo coś mi się wydaje że potrzebujesz właśnie tego co on napisał.

0

O! albo Boost.Multiprecision:

#include <iostream>
#include <boost\multiprecision\cpp_int.hpp>

using namespace boost::multiprecision;

int main()
{
    cpp_int n = pow(cpp_int(10), 2500);
    std::cout << n;
    return 0;
}
2

a ja radzę opisać po co ci takie wielkie liczby, bo na 99% liczysz coś w stylu: "a^b mod c" a na to są cwane sposoby nie wymagające obliczeń na ogromnych liczbach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0