Queries using Bitsets

Can Anyone Please explain why I am getting TLE or please explain how to optimize the above solution

#include<bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	int t;
	std::cin >> t;
	long long mod=4294967296;
	while(t--)
	{  
	    int q,s1,a,b;
	    cin>>q>>s1>>a>>b;
	    bitset<1000000002> bt;
	    long long prev=s1,num=0;
	    long long ans=0;
	    while(q--){
	         num=prev/2;
	         if(prev&1){
	             bt[num]= (bt[num] | 1);
	         }else{
	             bt[num]  = (bt[num] & 0);
	         }
	         prev=(((a*prev)%mod)+(b%mod))%mod;
	    }
	    string s=bt.to_string();
	    reverse(s.begin(),s.end());
	    for(int i=0;i<s.length();i++){
	        ans+=(s[i]-'0');
	    }
	    cout<<ans<<"\n";
	    
	    
	    
	}
	return 0;
}

Link to problem : CHEFQUE
Any help would be appreciated

You are reading 5 variables but they are only 4 (q,s1,a,b) in the input.

#include<bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	long long mod=4294967296;
	    int q,s1,a,b;
	    cin>>q>>s1>>a>>b;
	    bitset<1000000002> bt;
	    long long prev=s1,num=0;
	    long long ans=0;
	    while(q--){
	         num=prev/2;
	         if(prev&1){
	             bt[num]= (bt[num] | 1);
	         }else{
	             bt[num]  = (bt[num] & 0);
	         }
	         prev=(((a*prev)%mod)+(b%mod))%mod;
	    }
	    string s=bt.to_string();
	    reverse(s.begin(),s.end());
	    for(int i=0;i<1000000002;i++){
	        ans+=(s[i]-'0');
	    }
	    cout<<ans<<"\n";
	    
	    
	    
	return 0;
}

Thanks Identified it