回答編集履歴

7

 

2022/08/30 22:19

投稿

退会済みユーザー
test CHANGED
@@ -13,8 +13,8 @@
13
13
  左シフト演算子では、結果の型の範囲外にある上位ビットは破棄され、空の下位ビット位置は、ゼロに設定されます。[参考](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-:~:text=%E5%B7%A6%E3%82%B7%E3%83%95%E3%83%88%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%A7%E3%81%AF%E3%80%81%E7%B5%90%E6%9E%9C%E3%81%AE%E5%9E%8B%E3%81%AE%E7%AF%84%E5%9B%B2%E5%A4%96%E3%81%AB%E3%81%82%E3%82%8B%E4%B8%8A%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E3%81%AF%E7%A0%B4%E6%A3%84%E3%81%95%E3%82%8C%E3%80%81%E7%A9%BA%E3%81%AE%E4%B8%8B%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E4%BD%8D%E7%BD%AE%E3%81%AF%E3%80%81%E3%82%BC%E3%83%AD%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82)
14
14
   
15
15
  # <上記の事実と質問の状況から推測できること>
16
- 第4問は、左シフト演算の結果 int の範囲を超えるようなab が設定されていると考えられます。
16
+ 第4問は、左シフト演算の結果 int の範囲を超えるような a, b が設定されていると考えられます。
17
- 質問のコードは、int型の数に対してシフト演算するようになっています第4問はシフト演算の結果が int 型の範囲を超えてしまい、上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
17
+ 質問のコードは、int 型の数に対してシフト演算するようになっていますが、第4問はシフト演算の結果が int 型の範囲を超えており、上位ビットが破棄されて Wrong Answer になってしまっていると推測されます。
18
18
 
19
19
  # <対応策>
20
20
  したがって、64bit整数(long)に対して左シフト演算を行うように組む必要があります。

6

 

2022/08/30 14:30

投稿

退会済みユーザー
test CHANGED
@@ -14,7 +14,7 @@
14
14
   
15
15
  # <上記の事実と質問の状況から推測できること>
16
16
  第4問は、左シフト演算の結果 int の範囲を超えるようなa、b が設定されていると考えられます。
17
- プログラム上、int型の数に対してシフト演算するようになっていると、結果 int 型となるため第4問では上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
17
+ 質問のコードでは、int型の数に対してシフト演算するようになっています。第4問はシフト演算の結果 int 型の範囲を超えてしまい、上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
18
18
 
19
19
  # <対応策>
20
20
  したがって、64bit整数(long)に対して左シフト演算を行うように組む必要があります。

5

 

2022/08/30 14:28

投稿

退会済みユーザー
test CHANGED
@@ -17,8 +17,8 @@
17
17
  プログラム上、int型の数に対してシフト演算するようになっていると、結果も int 型となるため、第4問では上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
18
18
 
19
19
  # <対応策>
20
- したがって、たとえば計算結果が64bit整数(long)なるように組む必要があります。
20
+ したがって、64bit整数(long)に対して左シフト演算を行うように組む必要があります。
21
- なお 左シフト演算子の右辺 に long型を置くとエラーになるので、右辺は int のままとします。
21
+ なお左シフト演算子の右辺 に long型を置くとエラーになるので、右辺は int のままとします。
22
22
 
23
23
  ```C#
24
24
  using System;

4

 

2022/08/30 14:24

投稿

退会済みユーザー
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  左シフト演算子では、結果の型の範囲外にある上位ビットは破棄され、空の下位ビット位置は、ゼロに設定されます。[参考](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-:~:text=%E5%B7%A6%E3%82%B7%E3%83%95%E3%83%88%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%A7%E3%81%AF%E3%80%81%E7%B5%90%E6%9E%9C%E3%81%AE%E5%9E%8B%E3%81%AE%E7%AF%84%E5%9B%B2%E5%A4%96%E3%81%AB%E3%81%82%E3%82%8B%E4%B8%8A%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E3%81%AF%E7%A0%B4%E6%A3%84%E3%81%95%E3%82%8C%E3%80%81%E7%A9%BA%E3%81%AE%E4%B8%8B%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E4%BD%8D%E7%BD%AE%E3%81%AF%E3%80%81%E3%82%BC%E3%83%AD%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82)
14
14
   
15
- # <上記の事実と質問の状況から得られる推測>
15
+ # <上記の事実と質問の状況から推測できること
16
16
  第4問は、左シフト演算の結果 int の範囲を超えるようなa、b が設定されていると考えられます。
17
17
  プログラム上、int型の数に対してシフト演算するようになっていると、結果も int 型となるため、第4問では上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
18
18
 

3

 

2022/08/30 14:23

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,9 @@
1
+ # <諸前提>
2
+ ```
1
3
  ●制約
2
4
  a(1≦a≦3×10^6)
3
5
  b(1≦b≦10)
6
+ ```
4
7
  より、
5
8
  aを左にbビットシフトした結果がとりうる最大値は
6
9
  3 × 10^6 × 1,024 = 3,072,000,000
@@ -9,9 +12,11 @@
9
12
 
10
13
  左シフト演算子では、結果の型の範囲外にある上位ビットは破棄され、空の下位ビット位置は、ゼロに設定されます。[参考](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-:~:text=%E5%B7%A6%E3%82%B7%E3%83%95%E3%83%88%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%A7%E3%81%AF%E3%80%81%E7%B5%90%E6%9E%9C%E3%81%AE%E5%9E%8B%E3%81%AE%E7%AF%84%E5%9B%B2%E5%A4%96%E3%81%AB%E3%81%82%E3%82%8B%E4%B8%8A%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E3%81%AF%E7%A0%B4%E6%A3%84%E3%81%95%E3%82%8C%E3%80%81%E7%A9%BA%E3%81%AE%E4%B8%8B%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E4%BD%8D%E7%BD%AE%E3%81%AF%E3%80%81%E3%82%BC%E3%83%AD%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82)
11
14
   
15
+ # <上記の事実と、質問の状況から得られる推測>
12
16
  第4問は、左シフト演算の結果 int の範囲を超えるようなa、b が設定されていると考えられます。
13
- プログラム上、int 状態でシフト演算するようになっていると、第4問で上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
17
+ プログラム上、int数に対してシフト演算するようになっていると、結果も int 型となるため、第4問で上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
14
18
 
19
+ # <対応策>
15
20
  したがって、たとえば計算結果が64bit整数(long)等になるように組む必要があります。
16
21
  なお 左シフト演算子の右辺 に long型を置くとエラーになるので、右辺は int のままとします。
17
22
 

2

 

2022/08/30 14:20

投稿

退会済みユーザー
test CHANGED
@@ -6,6 +6,11 @@
6
6
  3 × 10^6 × 1,024 = 3,072,000,000
7
7
  ですが、これは int の上限(2,147,483,647)を超えています。
8
8
  https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
9
+
10
+ 左シフト演算子では、結果の型の範囲外にある上位ビットは破棄され、空の下位ビット位置は、ゼロに設定されます。[参考](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-:~:text=%E5%B7%A6%E3%82%B7%E3%83%95%E3%83%88%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%A7%E3%81%AF%E3%80%81%E7%B5%90%E6%9E%9C%E3%81%AE%E5%9E%8B%E3%81%AE%E7%AF%84%E5%9B%B2%E5%A4%96%E3%81%AB%E3%81%82%E3%82%8B%E4%B8%8A%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E3%81%AF%E7%A0%B4%E6%A3%84%E3%81%95%E3%82%8C%E3%80%81%E7%A9%BA%E3%81%AE%E4%B8%8B%E4%BD%8D%E3%83%93%E3%83%83%E3%83%88%E4%BD%8D%E7%BD%AE%E3%81%AF%E3%80%81%E3%82%BC%E3%83%AD%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82)
11
+  
12
+ 第4問は、左シフト演算の結果 int の範囲を超えるようなa、b が設定されていると考えられます。
13
+ プログラム上、int の状態でシフト演算するようになっていると、第4問で上位ビットが破棄されて Wroing Answerになってしまっていると推測されます。
9
14
 
10
15
  したがって、たとえば計算結果が64bit整数(long)等になるように組む必要があります。
11
16
  なお 左シフト演算子の右辺 に long型を置くとエラーになるので、右辺は int のままとします。

1

 

2022/08/30 14:16

投稿

退会済みユーザー
test CHANGED
@@ -8,7 +8,7 @@
8
8
  https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
9
9
 
10
10
  したがって、たとえば計算結果が64bit整数(long)等になるように組む必要があります。
11
- なお ビット演算子の右辺 に long型を置くとエラーになるので、右辺は int のままとします。
11
+ なお 左シフト演算子の右辺 に long型を置くとエラーになるので、右辺は int のままとします。
12
12
 
13
13
  ```C#
14
14
  using System;