Dobry jesteś, że naklepałeś Karatsubę do tego zadania.
Podpowiem tylko, że w tej linijce:
ll Z = ll_karacuba(begin1 + end1, begin2 + end2, mod) - X - Y;
'Z' ma czasem wartości większe niż 'mod'.
Po małej poprawce udało mi twoim kodem się zaliczyć przykładowe testy, ale nie sprawdzałem, czy zadanie przejdzie testy na spoju.
Jak będziesz mieć dalej problemy, to pisz.
PS. Wydaje mi się, że algorytm nazywa się Karatsuba, a nie Karacuba. Problem w tym, że Wikipedia mówi jedno, a inne strony drugie. Ciężko powiedzieć, kto ma rację.
Pozdrawiam