W zasadzie musisz zmienić tylko jedną rzecz, a mianowicie linię 6. zastąpić tym:
while (scanf("%d", &a) == 1)
Jako błąd dostajesz pewnie SIGXFSZ. On wynika z tego, że ta pętla działa w nieskończoność, bo zauważ, że scanf będzie zwracał 1, dopóki pobiera jakieś dane, a w przeciwnym razie, gdy natrafi na EOF, zwróci -1. Tylko -1 zamieni się na true, więc pętla się nie zakończy.
W takich zadaniach dobrze też korzystać z long long, żeby nie wyszło poza inta, tak jak powiedział profesorek96.