私はこの質問で少し苦労しています。 コードにANY条件/ループを使用しないで別の番号を返す必要があります。入力として2つの数字を取得し、3番目の異なる数字を返すメソッドを作成してください
私の考え方は、ソリューションの方向がビット操作を使用している可能性がありますか?
私はこの質問で少し苦労しています。 コードにANY条件/ループを使用しないで別の番号を返す必要があります。入力として2つの数字を取得し、3番目の異なる数字を返すメソッドを作成してください
私の考え方は、ソリューションの方向がビット操作を使用している可能性がありますか?
((a&1)|(b&2))^3
は、1ビット目にa
異なって0と3の間の数であり、第2のビットにb
は異なります。 (これはCの表記法を使用しています:&
はビット単位で、|
はビット単位でor、^
はビット単位でxorです)。
大丈夫ですが、a、bの両方が0の場合は? ^だけがそれらを変更するでしょうか? –
@miss_M、cは3に等しくなります – DAle
3番目の番号が異なることを確認するには、変更された元の番号の一部を取ります。たとえば、数字が123と789の場合、最初の数字の「2」をとり、2番目の数字の「3」と「9」にして「0」にすることができます。これら2つを連結して「30」を得る。これは最初の数字にすることはできません。なぜなら、最後の数字が2番目の数字と異なるからです。最後の数字が異なるため、2番目の数字にすることはできません。
これは(整数演算を仮定して)ループとIFSなしで製剤化することができる。
(a+10)/10%10*10 + (b+1)%10
素晴らしい! しかし、両方のa、bが等しい場合、それらは0に等しいと言うことができます。 - > a = b = 0 この場合、この式はうまくいかないため、/ –
問題はありません11. – Henry
そうですよ! "123"から "second"の数字を取ったロジックは何ですか?いいえ、最初に言うことはできません。 –
与えられた二つの数字がある場合:
あなたは単純に返すことができます:
abs(intput1) +abs(input2) +1
をあなたは1 + (-1) +1 = 1
のようなものを避けるためにabs()
を呼び出す必要があります
あなたはどこから3つの番号を取得しますか?それらはハードコーディングされているか、追加のパラメータとして渡されているのでしょうか? – Paul
@Paul、私は質問が 'int notEqualToAorB(int a、int b)'であると仮定します。 – DAle
は、最後の2桁目を取り、それを変更し、変更されたbの最後の桁を連結します。 – Henry