P380 [P1517] [ECNA 1988] 高精求小数幂
普及
题目描述

题目描述

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

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

输入格式

本题有多组数据。

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

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

请读入到输入文件末尾:

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

保证数据组数不超过 $11$ 组。

输出格式

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

输出有三点要求:

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

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

样例输入
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

本题源自洛谷 P1517