山傘のプログラミング勉強日記[Java & Unity]

プログラミングに関する日記とどうでもよい雑記からなるブログです。

[yukicoder] No.276 連続する整数の和(1)

問題

No.276 連続する整数の和(1) - yukicoder

整数の性質に関する問題です。

考え方

 m 個の連続する数は一般に、

 nm, nm + 1, \cdots, nm + m - 1

と表すことができます。これらの和  Sは、

 S = m^2n + \dfrac{(m-1)m}{2}

となります。

 m = 2a + 1 のとき

このとき、

 S = (2a + 1)(n(2a + 1) + a)

となるので、 S の最大公約数は  2a + 1 = m となります。

 m = 2a のとき

このとき、

 S = a(4an + 2a - 1)

となるので、 S の最大公約数は  a= \dfrac{m}{2} となります。

コード

import java.util.Scanner;

public class Exec0276 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        long N = scan.nextLong();
        scan.close();
        if(N % 2 == 1) {
            System.out.println(N);
        }else {
            System.out.println(N / 2);
        }
    }
}