高精度浮点数幂无异于高精度乘法,只是多了浮点运算。处理方法是先去掉小数点,最后输出时再加上去。

但是不能忘了对小数点的特殊处理,例如:

输入: 10.000 1

输出: 10

如果不注意有可能输出为10. //<-注意这个多余的小数点。

贴代码吧~详见注释~

 1 #include <iostream>
 2 #include <cstring>
 3
 4 using namespace std;
 5
 6 int main() {
 7     string r;
 8     int n;
 9     while (cin>>r>>n) {
10         int i=1,p;
11         for (;i<6;i++)
12             if (r[i]=='.')
13                 p=i;//找出小数点所在
14         r.erase(p,1);//先去掉小数点
15         string ans;
16         ans.resize(1024,0);
17         for (i=0;i<5;i++)
18             ans[i]=r[4-i]-48;//数字倒排
19         r=ans;
20         int l=5;
21         for (i=1;i<n;i++) {
22             string tmp;
23             tmp=ans;
24             ans="";
25             ans.resize(1024,0);
26             for (int j=0;j<5;j++,l++) {
27                 for (int k=0;k<l;k++)
28                     ans[k+j]+=r[j]*tmp[k];
29                 for (int k=0;k<l;k++)
30                     if (ans[k]>=10) {
31                         if (k==l-1)
32                             l++;
33                         ans[k+1]+=ans[k]/10;
34                         ans[k]%=10;
35                     }
36             }//逐位相乘 注意进位
37         }
38         ans.insert(n*(5-p),1,'.');//插入小数点
39         int k=l;
40         while (0==ans[k]) --k;
41         int j=0;
42         while (0==ans[j]) ++j;//去掉首尾多余的零
43         if ('.'==ans[j]) ++j;//去掉多余的小数点
44         for (;k>=j;k--)ans[k]=='.'?cout<<'.':cout<<ans[k]-0;//最后正序输出
45         cout<<endl;
46     }
47     return 0;
48 }

转载于:https://www.cnblogs.com/lsdsjy/archive/2012/11/03/2752948.html

POJ1001 高精度浮点数幂运算相关推荐

  1. 一种快速的幂运算方法(底数是自然数e,指数是浮点数)

    问题   [给一个浮点数 y y y,现在需要你求出 e y e^y ey 的值是多少].   对于这个问题,最直接的方法是用库函数,例如在C++中<math.h>头文件提供了exp()函 ...

  2. 关于不能够精确的对浮点数进行运算的问题

    http://edu.eoe.cn/   在线课堂 昨天看到一篇帖子说了几个很明显的简单的浮点的运算,计算机都会算错. 我引过来给大家看看:' 运行代码: System.out.println(0.0 ...

  3. 浮点数相加php,利用php怎么实现一个浮点数精确运算功能

    利用php怎么实现一个浮点数精确运算功能 发布时间:2020-12-15 16:06:03 来源:亿速云 阅读:94 作者:Leah 今天就跟大家聊聊有关利用php怎么实现一个浮点数精确运算功能,可能 ...

  4. c语言浮点数如何精确计算,浮点数精确运算的分析和解决办法

    1.01 + 2.01 = 3.02 2.01 * 2.01 = 4 0401   不知你注意没有,这个很寻常的等式,你如果将它放在C++中,Java中,Basic中,它 居然是不成立的.计算机在开玩 ...

  5. python基础知识之整除、取余、幂运算

    数字和表达式 python解释器可以当作计算器使用 >>>2+2 4 整数除法 一个整数被另一个整数除,计算结果的小数部分被截去,只保留整数部分. 如果参与除法的两个数中有一个为浮点 ...

  6. python 幂运算_python幂运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...

  7. python中幂运算_python里幂运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...

  8. python中幂运算_python的幂运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...

  9. python中幂运算_python中幂运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...

  10. 数学运算符 +(加)、-(减)、(乘)、(除)、%(取余;取模)、(整除)、(幂运算)及分支结构

    数学运算符: +(加).-(减).*(乘)./(除).%(取余;取模).//(整除).**(幂运算) 1. +.-.*./ python的加减乘除和小学数学中的加减乘除的功能一样 print(3 + ...

最新文章

  1. Samba通过ad域进行认证并限制空间大小《转载》
  2. springMVC 注解 controller层的优化
  3. 2020年10月GitHub上最热门的开源项目
  4. [转] - 学习ASP.NET比较完整的流程!
  5. 动态引用webservice
  6. 使用 SAP CDS view SQL Function 将视图某些字段进行合并
  7. 全国计算机等级考试题库二级C操作题100套(第64套)
  8. 前端学习(1985)vue之电商管理系统电商系统之本地分支放到git上面保存
  9. Live WallPaper 让背景动起来
  10. Lateral View使用指南
  11. Emacs镜像ELPA
  12. IT 技能发展:10 大基本 IT 技能
  13. 银行卡四要素验证接口测试报告
  14. 计算机D盘无法读取,D盘目录或文件已损坏,无法读取解决方案
  15. mysql db_owner_SQL Server修改数据库对象所有者(Owner)浅析
  16. 【转载】不用加号和减号计算两个数的加法
  17. 记录一次C语言调用go生成的动态库的踩坑过程
  18. 编写dylib_iOS逆向-无需越狱注入动态库
  19. 美国商会呼吁对ICO进行澄清
  20. 模块化UPS与数据中心供配电架构的发展方向

热门文章

  1. 基于simHash的图像检索系统
  2. 基于差分分级和关联规则挖掘的气象数据关联性分析实战
  3. python基于给定时间戳生成 未来/过去 前进/倒退 n个时刻的时间戳操作大全(包括秒、分钟、小时、天、星期、月、年)
  4. rasa 中文 UnsupportedLanguageError: component ‘LanguageModelTokenizer‘ does not support language ‘zh‘.
  5. 2021-07-31mysql 登录退出
  6. python图像边缘检测_python 简单图像处理(11) 空间域图像锐化(边缘检测)
  7. solidity import @是什么意思
  8. 以太坊源代码 - eth_call以及eth_sendTransaction区别
  9. python2.7 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5
  10. php session失效