2

UVaで問題が発生しています。問題の説明は次のとおりです。

数pのn乗根を見つける必要があり、k ^ n=pとなる整数kが存在します。したがって、基本的に整数kを見つける必要があります。

制約:

p <10 ^ 101、n <200、k <10^9。すべての変数は整数で正です。

cの問題に対するACソリューションは、単純に次のように計算します。

pow(p,1/n);

doubleはe308までのデータを保持できることを知っていますが、私が知る限り、小数点以下15桁までの精度です。

だから私の質問は、上記の解決策が機能する理由ですが、精度のエラーはありませんか?

4

2 に答える 2

3

10^101という数字はとても大きく見えます。nが2の場合、kをどこにも保存できません。

しかし、他の制約を見ると、kは10^9に制限されています。符号なし型の30ビットを取ります。ダブルの仮数はそれを簡単に保持できます。

于 2012-12-09T06:44:25.530 に答える
0

ヒント:問題の説明には小数点以下何桁が必要ですか?

于 2012-12-09T06:30:43.923 に答える