質問するログイン新規登録

質問編集履歴

3

一言

2020/01/17 02:01

投稿

BeatStar
BeatStar

スコア4962

title CHANGED
File without changes
body CHANGED
@@ -103,4 +103,18 @@
103
103
  すると i = 63 で 0 に戻っていました。(= オーバーフローを起こしている)
104
104
 
105
105
  追記:
106
- できれば**外部ライブラリに頼ることなく**、(xのn乗) を表現できたらなぁ...と思っているのですが...
106
+ できれば**外部ライブラリに頼ることなく**、(xのn乗) を表現できたらなぁ...と思っているのですが...
107
+
108
+
109
+ --------------
110
+
111
+ [追記2]
112
+
113
+ 皆様、ご回答ありがとうございます。
114
+ どの回答をBAにするか悩みましたが、Amazing_GraceさんのをBAとさせて頂きます。
115
+ (できれば他の方々にもBAにしたいのですが...)
116
+
117
+ ちょっと今回の問題は私にはハードルが高かったかもしれません。(回答を読むと、私の苦手な範囲が使われていたりして...)
118
+ もうちょっと調べてから再挑戦することにします。
119
+
120
+ ありがとうございました。

2

修正し忘れ

2020/01/17 02:01

投稿

BeatStar
BeatStar

スコア4962

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  C言語(もしくはC++)でlong longを超える値を扱う場合、どのようにすべきでしょうか。
7
7
 
8
- 例えば x^nを計算する Test::factorial関数があるとして、これの型をどうするかです。
8
+ 例えば (xn乗)を計算する Test::factorial関数があるとして、これの型をどうするかです。
9
9
 
10
10
  ある処理(例えば暗号等)をするライブラリを組んでいて、データ列(std::stringやstd::vector etc.)
11
11
  の長さを指定したい時があります。

1

x^n を (xのn乗)と書き換えた

2020/01/13 04:58

投稿

BeatStar
BeatStar

スコア4962

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,6 @@
1
1
  ※ 私はあまり数学は得意ではないです...
2
2
 
3
+
3
4
  CやC++でやっています。(主にBetterCというやつです)
4
5
 
5
6
  C言語(もしくはC++)でlong longを超える値を扱う場合、どのようにすべきでしょうか。
@@ -8,7 +9,7 @@
8
9
 
9
10
  ある処理(例えば暗号等)をするライブラリを組んでいて、データ列(std::stringやstd::vector etc.)
10
11
  の長さを指定したい時があります。
11
- 例えば暗号であれば「平文の長さは1~(2^64-1)とする」等のような場合で
12
+ 例えば暗号であれば「平文の長さは1~(264)とする」等のような場合で
12
13
  Cipherクラスがあるとして Cipher::maxPlainTextLength() で(要求する平文の)最大の長さを返したい...とかです。
13
14
 
14
15
  その場合、私のイメージでは
@@ -38,8 +39,8 @@
38
39
  Test::TYPE tmp = 1;
39
40
  /*
40
41
  計算式:
41
- 2^3 = 2 * 2 * 2 = 8
42
+ (23乗) = 2 * 2 * 2 = 8
42
- 2^64 = 2 * 2 * 2 ... = 18446744073709551616
43
+ (264乗) = 2 * 2 * 2 ... = 18446744073709551616
43
44
  */
44
45
  for( int i = 0; i < (int)n; i++ ){
45
46
  tmp *= x;
@@ -83,7 +84,7 @@
83
84
  ```
84
85
  思いつく型すべて試してみました。(charとかは別...)
85
86
 
86
- それでもだいぶマシなものでも 2^64 の計算では i = 61 までしか表現できそうにもありません...
87
+ それでもだいぶマシなものでも (264乗) の計算では i = 61 までしか表現できそうにもありません...
87
88
 
88
89
  やはり自分でクラスなりを作るべきでしょうか。
89
90
 
@@ -102,4 +103,4 @@
102
103
  すると i = 63 で 0 に戻っていました。(= オーバーフローを起こしている)
103
104
 
104
105
  追記:
105
- できれば**外部ライブラリに頼ることなく**、x^n を表現できたらなぁ...と思っているのですが...
106
+ できれば**外部ライブラリに頼ることなく**、(xn乗) を表現できたらなぁ...と思っているのですが...