東京大学合格を目指す高校生のきたまさ君は、数学の授業を受けていた。
授業は今、三角関数の説明を行っており、先生は黒板に綺麗な円を描いた。 きたまさ君は几帳面なので、方眼紙とコンパスを用いて綺麗にノートを取ることにした。 授業が終わって家に帰り、ノートを見ながら復習をしていたまじめなきたまさ君は、コンパスを用いて描いた円が、方眼紙の格子点上を何度も通っていることに気がついた。 数学が大好きなきたまさ君は、円の半径と円周上の格子点数になにか関係があるのではないかと考え、プログラムを書いてその対応を調べることにした。
入力は 1 行のみからなり、その行には 1 つの自然数 r が含まれる。 (1 ≤ r ≤ 1000)
原点中心半径 r の円周上の格子点の個数を一行に出力せよ。
1
4
5
12
#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; }
#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; }
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); } }