負の値を法とする問題を賢く解決します
多くのプログラミング言語では、ある数値を別の数値で割った後の剰余を計算するために使用されるモジュロ演算子 (%) が提供されています。ただし、この演算子を負の数に適用すると、予期しない結果が発生する可能性があります。
たとえば、C や Java などの言語で -1 % 3 を実行すると、結果は期待される 2 ではなく -1 になります。これは、モジュロ演算子は通常、除算演算の剰余を返し、負の被除数の場合は負の値になる可能性があるためです。
この問題を克服して望ましい動作を得るには、カスタム mod 関数を実装できます。
<code class="language-c++">int mod(int x, int m) { return (x % m + m) % m; }</code>
この関数を使用すると、次の計算結果が期待どおりになります:
输入 | 预期输出 | 函数输出 |
---|---|---|
-1 % 3 | 2 | mod(-1, 3) = 2 |
-2 % 3 | 1 | mod(-2, 3) = 1 |
-3 % 3 | 0 | mod(-3, 3) = 0 |
この関数の仕組みは、最初のモジュロ演算で得られた負の値にモジュラスを加算することで、結果が常に正になるようにすることです。
以上が負の数値でモジュラス演算子を使用するときに確実に正の結果を得るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。