[解決済み】関数f(f(n))を設計する == -n
2022-03-23 23:18:26
質問
前回の面接で受けた質問です。
<ブロッククオート
関数を設計する
f
, そのようなものです。
f(f(n)) == -n
ここで
n
は32ビット
符号付き整数
複素数の演算はできません。
もし、全範囲の数に対してそのような関数を設計できないなら、できるだけ大きな範囲に対して設計してください。
何かアイデアはありますか?
解決方法は?
いかがでしょうか。
f(n) = sign(n) - (-1) n * n
Pythonの場合。
def f(n):
if n == 0: return 0
if n >= 0:
if n % 2 == 1:
return n + 1
else:
return -1 * (n - 1)
else:
if n % 2 == 1:
return n - 1
else:
return -1 * (n + 1)
Pythonは整数を自動的に任意の長さのlongに昇格させます。他の言語では、最大の正の整数がオーバーフローするので、それを除いたすべての整数に対して動作します。
実数で動作させるためには
n
には、(-1)
n
と
{ ceiling(n) if n>0; floor(n) if n<0 }
.
C#の場合(オーバーフローの場合を除き、どんなダブルでも動作します)。
static double F(double n)
{
if (n == 0) return 0;
if (n < 0)
return ((long)Math.Ceiling(n) % 2 == 0) ? (n + 1) : (-1 * (n - 1));
else
return ((long)Math.Floor(n) % 2 == 0) ? (n - 1) : (-1 * (n + 1));
}
関連
-
[解決済み] スケールファクターまで
-
[解決済み] Mathematica の行列対角化
-
[解決済み] 矩形を回転させる最も簡単な方法
-
[解決済み] glm::normalizeは何をするのですか?
-
[解決済み] 2つの整数の最小公倍数を計算する最も効率的な方法は何でしょうか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み】「エントロピーと情報利得」って何?
-
[解決済み】なぜ10進数は2進数で正確に表現できないのですか?
-
[解決済み】最小値と最大値がわかっている数値の範囲を縮小する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】n個のノードを持つ有向グラフの最大エッジ数は何個ですか?[クローズド]。
-
[解決済み] 算術オーバーフローと算術キャリーの比較
-
[解決済み] Mathematica の行列対角化
-
[解決済み] glm::normalizeは何をするのですか?
-
[解決済み】ポリゴンの点のリストが時計回りに並んでいるかどうかを判断する方法は?
-
[解決済み】なぜ10進数は2進数で正確に表現できないのですか?
-
[解決済み】円内のランダムな点を生成する(一律)。
-
[解決済み】最小値と最大値がわかっている数値の範囲を縮小する方法
-
[解決済み】線分の法線ベクトルを計算するには?[クローズド]。
-
[解決済み] GUIDは常に一意であると仮定しても安全ですか?