Problem A: コンパス

東京大学合格を目指す高校生のきたまさ君は、数学の授業を受けていた。

授業は今、三角関数の説明を行っており、先生は黒板に綺麗な円を描いた。 きたまさ君は几帳面なので、方眼紙とコンパスを用いて綺麗にノートを取ることにした。 授業が終わって家に帰り、ノートを見ながら復習をしていたまじめなきたまさ君は、コンパスを用いて描いた円が、方眼紙の格子点上を何度も通っていることに気がついた。 数学が大好きなきたまさ君は、円の半径と円周上の格子点数になにか関係があるのではないかと考え、プログラムを書いてその対応を調べることにした。

Input

入力は 1 行のみからなり、その行には 1 つの自然数 r が含まれる。 (1 ≤ r ≤ 1000)

Output

原点中心半径 r の円周上の格子点の個数を一行に出力せよ。

Sample Input 1

1

Output for Sample Input 1

4

Sample Input 2

5

Output for Sample Input 2

12

Sample Code in C

#include <stdio.h>

int main() {
    int r, num = 0, x, y;
    scanf("%d", &r);
    for (x = -r; x <= r; x++) {
        for (y = -r; y <= r; y++) {
            if (x * x + y * y == r * r) num++;
        }
    }
    printf("%d\n", num);
    return 0;
}

Sample Code in C++

#include <iostream>

using namespace std;

int main() {
    int r, num = 0;
    cin >> r;
    for (int x = -r; x <= r; x++) {
        for (int y = -r; y <= r; y++) {
            if (x * x + y * y == r * r) num++;
        }
    }
    cout << num << endl;
    return 0;
}

Sample Code in Java

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int r = sc.nextInt();
        int num = 0;
        for (int x = -r; x <= r; x++) {
            for (int y = -r; y <= r; y++) {
                if (x * x + y * y == r * r) num++;
            }
        }
        System.out.println(num);
    }

}

注意

C、C++のソースコードでは最後にreturn 0; をしないとRuntimeErrorとなることがあるので注意せよ。
Javaのクラス名は"Main"でなければならず、またデフォルトパッケージを用いなければならないことに注意せよ。
Problemsetter: Yoichi Iwata