DoubleSum(牛客)



突破点和关键点就在于那个c的k次方,为啥是c的k次方,肯定是有奇效的

#include
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int maxn=1e5+5;
ll a[maxn],ans;
ll fast_mi(ll a,ll b){
	ll sum=1;
	while(b){
		if(b&1)sum*=a;
		a*=a;
		b>>=1;
	}
	return sum;
}
int main(){
int n,c,x;
cin>>n>>c;
int up=1;while(fast_mi(c,up)<=1e9)up++;
for(int i=1;i<=n;i++)cin>>a[i];
    for(int k=up;k>=1;k--){
    	ll mod=fast_mi(c,k);
    	mapmp;
		for(int i=1;i<=n;i++){
    	mp[a[i]%mod]++;
    	if(mp[a[i]%mod]>=2){
    		//cout<<"mod="<