witam jak zadeklarowac liczbe o rozmiarze 10^2500
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
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ł.
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;
}
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.