A ja odradzam string/char.
Na SPOJu istnieje nie tak znowu mało zadań, które opierają się na arytmetyce wielkich liczb. Zwykle w tych zadaniach niedostępne są języki, w których arytmetyka wielkich liczb nie jest problemem. Według mnie nie ma sensu za każdym razem trzaskać te same/podobne operacje i lepiej zrobić to raz a porządnie.
W internecie krążą prawie gotowe klasy do arytmetyki wielkich liczb. Ja wolałem dorzucić sobie kilka ciekawych funkcji (typu liczby Bella, tak zwany ciąg tetranacciego, sorty itd) użytecznych na spoju a inne rzeczy napisać po swojemu, ale co kto lubi. Zrobienie własnej klasy trochę mi zajęło, ale pozwoliło mi to nauczyć się obiektówki, poznać różne nietrywialne algorytmy i oswoić z pracą z kilkoma tysiącami linii kodu.
Czy było warto? Tak. Z racji, że temat mnie ciekawi, będę jeszcze dłuuuugo doskonalił tą klasę (marzy mi się implementacja arytmetyki zmiennoprzecinkowej z dokładnością do chociaż 1000 miejsc po przecinku) i wykorzystywał ją do swoich problemów biol-chem-mat-fiz.
Okazuje się jednak, że przydaje się ona też w problemach... informatycznych! Dodawanie? BigInt a, b; i a + b na out. Odejmowanie? Tak samo. Mnożenie? Też. Jakieś zadanie z potęgowaniem modulo (też jest w średnich)? Żaden problem. WIelkie silnie, szybko rosnące rekurencje? AC w paru liniach. W trudnych jest chyba zadanie z obliczeniem liczby pi z żądaną dokładnością a gdzieś widziałem dużo innych zadań tego typu. W średnich widziałem też zadanie z rozwiązaniem równania kwadratowego z dokładnością do entego miejsca po przecinku. Oczywiście, można to zrobić przy pomocy char czy string, ale według mnie wygodniej mieć już napisaną porządną "maszynkę do trzaskania zadań" i nie męczyć się z pisaniem kodu pod dane zadanie.
Oczywiście są dwie wady mojego podejścia: może się okazać, że komuś szybciej pójdzie własna arytmetyka pod kątem zadania niż własna klasa i nawet ilość zadań nie zmieni tej zależności. Dodatkowo klasa będzie zawsze wolniejsza niż rozwiązania pomyślane stricte pod dany problem. Mimo to mam tym sposobem same AC w rozsądnym czasie a poprawki w klasie poprawią wyniki we wszystkich zadaniach.
A swoją drogą to muszę tu podziękować rr_ za podsunięcie mi tego pomysłu 