classSolution{public:intmaximumXorProduct(longlonga,longlongb,intn){constexprintkMod=1'000'000'007;if(n>0)for(longbit=1L<<(n-1);bit>0;bit>>=1)// Pick a bit if it makes min(a, b) larger.if((min(a,b)&bit)==0){a^=bit;b^=bit;}returna%kMod*(b%kMod)%kMod;}};
1 2 3 4 5 6 7 8 910111213
classSolution{publicintmaximumXorProduct(longa,longb,intn){finalintMOD=1_000_000_007;if(n>0)for(longbit=1L<<(n-1);bit>0;bit>>=1)// Pick a bit if it makes Math.min(a, b) larger.if((Math.min(a,b)&bit)==0){a^=bit;b^=bit;}return(int)(a%MOD*(b%MOD)%MOD);}}
123456789
classSolution:defmaximumXorProduct(self,a:int,b:int,n:int)->int:MOD=1_000_000_007forbitin(2**iforiinrange(n)):# Pick a bit if it makes min(a, b) larger.ifa*b<(a^bit)*(b^bit):a^=bitb^=bitreturna*b%MOD