[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
2022-03-14 19:54:23
質問
を使わずに3で割るにはどうしたらいいのでしょうか?
*
,
/
,
+
,
-
,
%
演算子?
数値は符号付きでも符号なしでもよい。
どのように解決するのですか?
これは
簡易機能
は、目的の操作を実行する。しかし、そのためには
+
演算子を使うので、あとはビット演算子で値を足すだけです。
// replaces the + operator
int add(int x, int y)
{
while (x) {
int t = (x & y) << 1;
y ^= x;
x = t;
}
return y;
}
int divideby3(int num)
{
int sum = 0;
while (num > 3) {
sum = add(num >> 2, sum);
num = add(num >> 2, num & 3);
}
if (num == 3)
sum = add(sum, 1);
return sum;
}
Jimがコメントしたように、これはうまくいきます、なぜなら。
-
n = 4 * a + b
-
n / 3 = a + (a + b) / 3
-
だから
sum += a
,n = a + b
というように、繰り返し行います。 -
いつ
a == 0 (n < 4)
,sum += floor(n / 3);
すなわち、1.if n == 3, else 0
関連
-
[解決済み] munmap_chunk(): 無効なポインタ
-
[解決済み] Windows用Cコンパイラ?[クローズド]
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] JavaScriptで整数の除算を行い、余りを別途取得する方法は?
-
[解決済み] JavaScriptで、数値が精度を失うことなく到達できる最も高い整数値は何ですか?
-
[解決済み] ある数字が2の累乗かどうかを確認する方法
-
[解決済み】関数f(f(n))を設計する == -n
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
構造体の配列--[エラー] '['トークンの前に一次式があることが予想される
-
error: '.' トークンの前にunqualified-idを指定する必要があります。
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
[解決済み] mallocで文字列を確保する
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]
-
[解決済み] C言語のi++と++iに性能差はあるのでしょうか?
-
[解決済み] .aファイル、.soファイルとは何ですか?
-
[解決済み] アセンブリがCより速いのはどんなとき?[クローズド]
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する