Ja bym sugerował takie liczby przechowywać w long double. Jednak graniczne wartosci to i tak nie istnieje taki system który przechowa to w jednej zmiennej ,,, trzeba to zapisac w postaci tablicy
https://pl.cppreference.com/w/cpp/language/types
spójrz proszę na table zamieszczoną pod wstawionym tekstem: Zakresy wartości
Następująca tabela przedstawia wartości referencyjne limitów popularnych reprezentacji typów numerycznych. Standard C++ pozwala na dowolną reprezentację liczb całkowitych, więc w tabeli znajdziemy obydwa - minimalne zagwarantowane wymagania (które odpowiadają limitom z kodu uzupełnień do jedności lub sposobu Kod znak-moduł) oraz limitom najczęściej używanej implementacji, kodu uzupełnień do dwóch. Wszystkie popularne modele danych (włączając wszystkie ILP32, LP32, LP64, LLP64) używają kodu uzupełnień do dwóch.
Z drugiej jednak strony tak potworna liczba jak 10 ^1000 gemeralnie musi być poddane zamianie, nie jest możliwe przechowywanie to w jednej zmienne:
Trzeba by to poddać faktoryzacji NUMERYCZNEJ Możesz przechowywać każdą cyfrę tej wartości za pomocą połączonej listy. Powinieneś napisać podstawowy program do operacji na tak dużej liczbie. Lub możesz zapisać go jako ciąg.
https://www.geeksforgeeks.org/factorial-large-number/