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

回答編集履歴

1

誤字修正

2021/03/22 13:41

投稿

hagi3to5
hagi3to5

スコア23

answer CHANGED
@@ -1,5 +1,5 @@
1
- 以下直せば動きました。
1
+ 以下直せば動きました。
2
2
  - ansとnumはlong longにする。(intだと2^31-1が上限なので、計算中にオーバフローしている)
3
3
  - if(ans > 1e18/num)に直す。(他の方の丁寧な回答を参照してください)
4
4
  - 1e18を1000000000000000000に直す。
5
-  これは自分の予想が含まれるのですが1e18はdouble型になるため、1e19/numもdouble型になっている。double型の有効桁数が10進数で15桁程度なので、1e18/999999000001の計算結果が1000000.999999999998999999ではなく1000001.00000に丸められてしまう。その結果-1のルートに入らない。)
5
+  これは自分の予想が含まれるのですが1e18はdouble型になるため、1e18/numもdouble型になっている。double型の有効桁数が10進数で15桁程度なので、1e18/999999000001の計算結果が1000000.999999999998999999ではなく1000001.00000に丸められてしまう。その結果-1のルートに入らない。)