#P1517. 高精求小数幂

高精求小数幂

题目描述

计算量非常大、精度要求非常高的问题是很常见的。举个例子,计算国家债务就是这么一项对于许多计算机系统来说非常繁重的工作。

现在有这么一个任务要求编写一个程序来计算 RnR^n 的精确值,其中 RR 是一个实数 (0<R9999.9)(0 < R \le 9999.9)nn 是一个整数 (1n250)(1 \le n \le 250)

输入格式

本题有多组数据。

对于每组数据,一行两个数字 R,nR,n,中间有至少一个空格。

保证每行包括空格在内恰好有 99 个字符,且 nn 后面没有空格。

请读入到输入文件末尾:

  • 对于 C++ 的 std::cin,可以使用 while (std::cin >> s >> n) {/* ... */} 来实现这一功能,其中 sstd::string 类型的变量。
  • 对于 C/C++ 的 scanf,可以使用 while (scanf("%s%d", s, &n) == 2) {/* ... */} 来实现这一功能,其中 schar* 类型的变量。
  • 对于其他输入函数实现这一功能的方式,请自行查阅文档。

保证数据组数不超过 1111 组。

输出格式

对于每组数据,输出一行一个实数,表示 RnR^n精确值

输出有三点要求:

  1. 输出不允许有前导 00
  2. 小数部分末尾不能有 00
  3. 如果结果是整数,不应该输出小数点。

特别地,当答案小于 1\bm 1 时,你需要省略整数部分的 0\bm 0,输出形如 .25 的答案。

题目大意

计算量非常大、精度要求非常高的问题是很常见的。举个例子,计算国家债务就是这么一项对于许多计算机系统来说非常繁重的工作。

现在有这么一个任务要求编写一个程序来计算R^n的精确值,其中R是一个实数(0.0 < R <= 9999.9)而n是一个整数(0 < n <= 250)。

输入将包含一个小于11行的文件,其中每一行包括一个R和一个n,中间用空格隔开(数量不定但是保证R的第一位在第一列而n的末位在第九列)

对于每一个输入需要有一行的输出,表示R^n的精确值。有三点要求:

1、输出不允许有前导0

2、不允许无意义的尾随0(如1.90中的0不能输出)

3、如果结果是整数,不应该打印小数点

如果你不知道如何确定输入的末尾值:

以下是一些帮助

string s; int n;

c++版while(cin >> s >> n) {…这里是你的代码}

c版while(scanf("%s%d",s,&n)==2) //以查看scanf是否按需要的数量读取。

{…这里是你的代码}

感谢 @SLYZ_0120 提供的翻译。

95.123  2
0.4321  5
5.1234  7
6.7592  3
98.999  5
1.0100 10

9048.385129
.01506334182914325601
92663.3181348508776705891407804544
308.806114738688
9509420210.697891990494999
1.10462212541120451001