回答編集履歴

2

誤りを修正

2017/03/03 08:09

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -1,13 +1,11 @@
1
1
  連続する2つの値ですから、x + (x+1) が N の倍数ですよね。
2
2
 
3
- つまり 2x+1 が N になる値を一つ見つけることができれば、あとは 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

修正

2017/03/03 08:09

投稿

tacsheaven
tacsheaven

スコア13703

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 になるまでの加算回数をカウントするだけでいいのでは。