for(int i=0;i<a+3;++i)
でaがループの中で使われなくても毎回計算されなおしますか?