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

回答編集履歴

2

誤りを修正

2017/03/03 08:09

投稿

tacsheaven
tacsheaven

スコア13707

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

1

修正

2017/03/03 08:09

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -2,4 +2,6 @@
2
2
  つまり 2x+1 が N になる値を一つ見つけることができれば、あとは N を加算していって(
3
3
  Nの倍数ですものね?)1000000 までに何回加算できたか分かればよいのでは。
4
4
 
5
- で、2x+1 が N になるということは、変形して 2x = N-1 ですから、x = (N-1)/2 ですよね。
5
+ で、2x+1 が N になるということは、変形して 2x = N-1 ですから、x = (N-1)/2 ですよね。
6
+ でもって、次の N の倍数、すなわち 2y+1 = 2N ですから、 2y = 2N-1 = N + N-1 より、y = N + (N-1)/2 です。つまり、y = x + N になります。
7
+ なので、最初の x さえ分かれば、あとは N を足していき、 x<1000000 になるまでの加算回数をカウントするだけでいいのでは。