回答編集履歴
2
誤りを修正
test
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
連続する2つの値ですから、x + (x+1) が N の倍数ですよね。
|
2
2
|
|
3
|
-
つまり 2x+1 が N になる値を一つ見つけることができれば、あとは
|
3
|
+
つまり 2x+1 が N になる値を一つ見つけることができれば、あとは 1000000 までに何回加算できたか分かればよいのでは。
|
4
|
-
|
5
|
-
Nの倍数ですものね?)1000000 までに何回加算できたか分かればよいのでは。
|
6
4
|
|
7
5
|
|
8
6
|
|
9
7
|
で、2x+1 が N になるということは、変形して 2x = N-1 ですから、x = (N-1)/2 ですよね。
|
10
8
|
|
11
|
-
でもって、次の N の倍数、すなわち 2y+1 = 2N ですから、 2y = 2N-1 = N + N-1 より、y = N + (N-1)/2 です。つまり、y = x + N になります。
|
9
|
+
でもって、次の N の倍数を構成する2値のうち小さい方をy とすると、すなわち 2y+1 = 2N ですから、 2y = 2N-1 = N + N-1 より、y = (N/2) + (N-1)/2 です。つまり、y = x + (N/2) になります。
|
12
10
|
|
13
|
-
なので、最初の x さえ分かれば、あとは N を足していき、 x<1000000 になるまでの加算回数をカウントするだけでいいのでは。
|
11
|
+
なので、最初の x さえ分かれば、あとは N/2 を足していき、 x<1000000 になるまでの加算回数をカウントするだけでいいのでは。
|
1
修正
test
CHANGED
@@ -7,3 +7,7 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
で、2x+1 が N になるということは、変形して 2x = N-1 ですから、x = (N-1)/2 ですよね。
|
10
|
+
|
11
|
+
でもって、次の N の倍数、すなわち 2y+1 = 2N ですから、 2y = 2N-1 = N + N-1 より、y = N + (N-1)/2 です。つまり、y = x + N になります。
|
12
|
+
|
13
|
+
なので、最初の x さえ分かれば、あとは N を足していき、 x<1000000 になるまでの加算回数をカウントするだけでいいのでは。
|