回答編集履歴

4

ビット演算を使用しないコードを追加

2021/07/19 06:34

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -43,3 +43,37 @@
43
43
  if (b & 1) c += a;
44
44
 
45
45
  ```
46
+
47
+ **追記2**
48
+
49
+ ビット演算を使わないコードです。
50
+
51
+ ```C
52
+
53
+ #include <stdio.h>
54
+
55
+
56
+
57
+ int main(void)
58
+
59
+ {
60
+
61
+ int a, b, c = 0;
62
+
63
+ if (scanf("%d%d", &a, &b) != 2) return 1;
64
+
65
+ for (; a; a += a) {
66
+
67
+ if (b % 2) c += a;
68
+
69
+ if (b < 0) b--;
70
+
71
+ b /= 2;
72
+
73
+ }
74
+
75
+ printf("%d\n", c);
76
+
77
+ }
78
+
79
+ ```

3

コードの修正

2021/07/19 06:34

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```C
40
40
 
41
- for (; b || a; a <<= 1, b >>= 1)
41
+ for (; a; a <<= 1, b >>= 1)
42
42
 
43
43
  if (b & 1) c += a;
44
44
 

2

コードの修正

2021/07/19 00:37

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```C
40
40
 
41
- for (; a || b; a <<= 1, b >>= 1)
41
+ for (; b || a; a <<= 1, b >>= 1)
42
42
 
43
43
  if (b & 1) c += a;
44
44
 

1

別解

2021/07/19 00:34

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -29,3 +29,17 @@
29
29
  ```
30
30
 
31
31
  オーバーフローは考慮していません。
32
+
33
+
34
+
35
+ **追記**
36
+
37
+ 別解
38
+
39
+ ```C
40
+
41
+ for (; a || b; a <<= 1, b >>= 1)
42
+
43
+ if (b & 1) c += a;
44
+
45
+ ```