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

回答編集履歴

3

切り上げに Math.ceil を使用

2020/10/01 09:02

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  double r = sc.nextDouble();
12
12
  int sum = 0, n = (int)r;
13
13
  for (int i = 0; i <= n; i++)
14
- sum += -(int)-Math.sqrt(r*r - i*i);
14
+ sum += (int)Math.ceil(Math.sqrt(r*r - i*i));
15
15
  System.out.println(sum * 4);
16
16
  }
17
17
  sc.close();

2

コード修正に伴う説明の削除

2020/10/01 09:02

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -18,8 +18,6 @@
18
18
  }
19
19
  }
20
20
  ```
21
- sqrt で結果が整数になることはほぼ無いと考え、切り上げを常に +1 で行いました。
22
-
23
21
  実行例
24
22
  ```text
25
23
  r: 1.7

1

コードを修正

2020/10/01 08:57

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  double r = sc.nextDouble();
12
12
  int sum = 0, n = (int)r;
13
13
  for (int i = 0; i <= n; i++)
14
- sum += (int)Math.sqrt(r*r - i*i) + 1;
14
+ sum += -(int)-Math.sqrt(r*r - i*i);
15
15
  System.out.println(sum * 4);
16
16
  }
17
17
  sc.close();
@@ -27,4 +27,7 @@
27
27
  r: 100.02651
28
28
  31852
29
29
  r: .
30
- ```
30
+ ```
31
+ **追記**
32
+ r = 1.0 の場合、結果が 4 になって欲しいのにそうならないのは、
33
+ 切り上げをちゃんとしなかったからということで、コードを修正しました。