/*
プログラミングのお題スレ Part12
//mevius.5ch.net/test/read.cgi/tech/1538096947/17
17 名前:デフォルトの名無しさん[] 投稿日:2018/10/01(月) 20:03:33.29 ID:IziOBEHB
お題:f(n)::={nを連続するいくつかの正整数の和として表す表し方の総数}とおく
例えば、15=7+8=4+5+6=1+2+3+4+5よりf(15)=4である
上限Nが与えられたとき、n<=Nでf(n)が奇数となるようなnをすべて足し合わせた値を求めよ
10 -> 24
100 -> 665
1000 -> 18006
10000 -> 571940
100000 -> 18010994
1000000 -> 569929080
10000000 -> 18001029437
100000000 -> 569128815672
1000000000 -> 17994029079715
*/
class Ideone
{
public static void main
(String[] args
) {
solve(10);
solve(100);
solve(1000);
solve(10000);
solve(100000);
solve(1000000);
solve(10000000);
solve(100000000);
solve(1000000000);
}
static void solve(int n)
{
for (int i = 1, j = 1; j <= n; j += ++i) {
for (int k = j; k <= n; k += i) {
bitset.flip(k);
}
}
System.
out.
printf("%d -> %d%n", n, bitset.
stream().
asLongStream().
sum()); }
}
LyoK44OX44Ot44Kw44Op44Of44Oz44Kw44Gu44GK6aGM44K544OsIFBhcnQxMiAKLy9tZXZpdXMuNWNoLm5ldC90ZXN0L3JlYWQuY2dpL3RlY2gvMTUzODA5Njk0Ny8xNwoKMTcg5ZCN5YmN77ya44OH44OV44Kp44Or44OI44Gu5ZCN54Sh44GX44GV44KTW10g5oqV56i/5pel77yaMjAxOC8xMC8wMSjmnIgpIDIwOjAzOjMzLjI5IElEOkl6aU9CRUhCCuOBiumhjO+8mmYobik6Oj17buOCkumAo+e2muOBmeOCi+OBhOOBj+OBpOOBi+OBruato+aVtOaVsOOBruWSjOOBqOOBl+OBpuihqOOBmeihqOOBl+aWueOBrue3j+aVsH3jgajjgYrjgY8K5L6L44GI44Gw44CBMTU9Nys4PTQrNSs2PTErMiszKzQrNeOCiOOCimYoMTUpPTTjgafjgYLjgosK5LiK6ZmQTuOBjOS4juOBiOOCieOCjOOBn+OBqOOBjeOAgW48PU7jgadmKG4p44GM5aWH5pWw44Go44Gq44KL44KI44GG44GqbuOCkuOBmeOBueOBpui2s+OBl+WQiOOCj+OBm+OBn+WApOOCkuaxguOCgeOCiAoKMTAgLT4gMjQKMTAwIC0+IDY2NQoxMDAwIC0+IDE4MDA2CjEwMDAwIC0+IDU3MTk0MAoxMDAwMDAgLT4gMTgwMTA5OTQKMTAwMDAwMCAtPiA1Njk5MjkwODAKMTAwMDAwMDAgLT4gMTgwMDEwMjk0MzcKMTAwMDAwMDAwIC0+IDU2OTEyODgxNTY3MgoxMDAwMDAwMDAwIC0+IDE3OTk0MDI5MDc5NzE1CiovCgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpCgl7CgkJc29sdmUoMTApOwogICAgICAgIHNvbHZlKDEwMCk7CiAgICAgICAgc29sdmUoMTAwMCk7CiAgICAgICAgc29sdmUoMTAwMDApOwogICAgICAgIHNvbHZlKDEwMDAwMCk7CiAgICAgICAgc29sdmUoMTAwMDAwMCk7CiAgICAgICAgc29sdmUoMTAwMDAwMDApOwogICAgICAgIHNvbHZlKDEwMDAwMDAwMCk7CiAgICAgICAgc29sdmUoMTAwMDAwMDAwMCk7CiAgICB9CiAgICAKICAgIHN0YXRpYyB2b2lkIHNvbHZlKGludCBuKQogICAgewogICAgICAgIGphdmEudXRpbC5CaXRTZXQgYml0c2V0ID0gbmV3IGphdmEudXRpbC5CaXRTZXQobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDEsIGogPSAxOyBqIDw9IG47IGogKz0gKytpKSB7CiAgICAgICAgICAgIGZvciAoaW50IGsgPSBqOyBrIDw9IG47IGsgKz0gaSkgewogICAgICAgICAgICAgICAgYml0c2V0LmZsaXAoayk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIiVkIC0+ICVkJW4iLCBuLCBiaXRzZXQuc3RyZWFtKCkuYXNMb25nU3RyZWFtKCkuc3VtKCkpOwogICAgfQp9