問題文:long型pairOrとpairSum:AorBとAPlusB
次の2つの非負整数を与えています。
は、2非負整数AとBのために、我々は両方持っている可能性があるかどうかを確認します。
- AまたはB = pairOr
- A + B = pairSum 上記
、 「または」はビット単位またはオペレータを示す。
このようなAとBが見つかるとTrueを返し、そうでなければFalseを返します。 | A:私は式を撮影した
:
私のアルゴリズムは、このように書きますB = X、A + B = Y、
ここで、第2式のAの値を代入した後、(Y-B)| B = X.
私は上記の式が真であるかどうかを調べるために0からY(Bの代わりに)までトラバースするつもりです。
コードスニペット:plusAndBの値は数10^18
であれば
boolean isPossible(long orAandB,long plusAandB) {
for(long i=0;i<=plusAandB;i++) {
if(((plusAandB-i)|i)==orAandB){
return true;
}
}
return false;
それはTLEを与えるだろう。最適化にお役立てください。