1848E - Vika and Stone Skipping - CodeForces Solution


brute force implementation math number theory

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll _=1e6+5;
ll n,q,x,s=1,t,a[_],i,j,M;
ll qp(ll x,ll y){ll z=1;for(;y;y>>=1,x=x*x%M)if(y&1)z=z*x%M;return z;}
void cal(ll x,bool f){
	ll y=0;
	while(x%M==0)x/=M,y++;
	if(f)t+=y,s=s*x%M;
	else t-=y,s=s*qp(x,M-2)%M;
}
void p(ll x){
	while(1^x&1)x>>=1;
	for(i=3;i*i<=x;i+=2)if(x%i==0){
		cal(a[i]+1,0);
		while(x%i==0)x/=i,a[i]++;
		cal(a[i]+1,1);
	}
	if(x>1)cal(a[x]+1,0),a[x]++,cal(a[x]+1,1);
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>x>>q>>M;
	while(1^x&1)x>>=1;
	for(i=3;i*i<=x;i+=2)if(x%i==0){
		cal(a[i]+1,0);
		while(x%i==0)x/=i,a[i]++;
		cal(a[i]+1,1);
	}
	if(x>1){if(x<_)a[x]++;s=s*2%M;}
	while(q--)cin>>x,p(x),cout<<(t?0ll:s)<<'\n';
}


Comments

Submit
0 Comments
More Questions

1650C - Weight of the System of Nested Segments
1097A - Gennady and a Card Game
248A - Cupboards
1641A - Great Sequence
1537A - Arithmetic Array
1370A - Maximum GCD
149A - Business trip
34A - Reconnaissance 2
59A - Word
462B - Appleman and Card Game
1560C - Infinity Table
1605C - Dominant Character
1399A - Remove Smallest
208A - Dubstep
1581A - CQXYM Count Permutations
337A - Puzzles
495A - Digital Counter
796A - Buying A House
67A - Partial Teacher
116A - Tram
1472B - Fair Division
1281C - Cut and Paste
141A - Amusing Joke
112A - Petya and Strings
677A - Vanya and Fence
1621A - Stable Arrangement of Rooks
472A - Design Tutorial Learn from Math
1368A - C+=
450A - Jzzhu and Children
546A - Soldier and Bananas