Getting TLE, Please Help!


#1

My code:

typedef long long int ll;
string answer(ll x){
//cout<<x<<endl;
string ans="";
while(x>0){
if(x%2==0){
ans = ‘0’+ans;
}
else{
ans = ‘1’+ans;
}
x/=2;
}
return ans;
}

string Solution::multiple(int a) {
int A = (long int)a;
if(A==0){
return “0”;
}
if(A==1){
return “1”;
}
map<ll,ll>present;
present[1]=1;
queue<pair<ll,ll>>pre;
pre.push(make_pair(1,1));
while(1){
//cout<<pre.front().first<<endl;
if(pre.front().first==0){
return answer(pre.front().second);
}
if(!present.count(((pre.front().first)*10+0)%A)){
pre.push(make_pair(((pre.front().first)*10+0)%A,(pre.front().second)*2));
present[((pre.front().first)*10+0)%A]=1;
}

        if(!present.count(((pre.front().first)*10+1)%A)){
            pre.push(make_pair(((pre.front().first)*10+1)%A,(pre.front().second)*2+1));
            present[((pre.front().first)*10+1)%A]=1;
        }
            
        pre.pop();
}

}