Próbowałeś użyć szybkiego i/o w Pythonie? Mi to często skraca czas z sekundy na jej ułamek:
fast in
fast out
Jeżeli zaś chodzi o zrobienie tego w C++... to z tego co widzę, wystarczy użyć mnożenia wielkich liczb (Jeżeli zrobiłeś zadanie http://pl.spoj.com/problems/TMUL/ to powinno łatwo wyjść) oraz dodawanie samych wyników w tablicy.
Skoro już udało Ci się zrobić to zadanie to mógłbyś rzucić jakieś testy? Dla Twojego 1 500 500 1
mam 2^500
, ale gdzieś coś źle robię. Możesz na przykład sprawdzić mi ten wynik?
In:
1
700 800 4
Out:
18680330847703464518688309150428604455933377501043539228532749986198161368658034797840898631798395354798998161920
PS. Wiele wyników pośrednich się powtarza. Może można by było je jakoś stablicować?