Po pierwsze to zamiast daną wartość mnożyć przez 2 a*=2, powinieneś do niej dodawać początkową wartość a.
#code..
int a1=a;
int b1=b;
do
{
#code..
if (x==0) cout<<a<<endl;
else a+=a1;
#code..
powyższy kod załatwia sprawę poprawnych obliczeń, jednak sądzę, że w zadaniach typu SPOJ, chcą aby najpierw wprowadzić wartości (do tablicy), a później wypisać wyniki w odpowiedniej kolejności.