每天一道算法_2_求高精度幂

今天这个可能有点偷懒,学c++的时候就知道大数计算很复杂,现在一直用java,有幸有大数的方法可以用那么今天的算法就用java偷懒过去吧Description对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 InputT输入包括多组 R 和 n。

大家好,又见面了,我是全栈君。

今天这个可能有点偷懒,学c++的时候就知道大数计算很复杂,现在一直用java,有幸有大数的方法可以用

那么今天的算法就用java偷懒过去吧

Description

对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  



现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(R
n),其中n 是整数并且 0 < n <= 25。

Input

T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。

Output

对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。

Sample Input & Sample Output

95.123 12
548815620517731830194541.899025343415715973535967221869852721
0.4321 20
.000000051485546410769561219945112767671548384817602007263512038354297630134624015.1234 15
43992025569.928573701266488041146654993318703707511666295476720493953024
6.7592  9
29448126.764121021618164430206909037173276672
98.999 10
90429072743629540498.107596019456651774561044010001
1.0100 12
1.126825030131969720661201

代码:

import java.math.BigDecimal;
import java.util.Scanner;

public class TheBigNumber {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while (in.hasNext()) {
			try {
				Double r = in.nextDouble();
				Integer n = in.nextInt();
				BigDecimal re = new BigDecimal(r.toString());
				String res = re.pow(n).stripTrailingZeros().toPlainString();
				if (res.startsWith("0"))
					res = res.substring(1, res.length());
				System.out.println(res);
			} catch (Exception e) {
			}
		}
	}
}

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121389.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何获取dropdownlist的值_mycat 数据库绑定

    如何获取dropdownlist的值_mycat 数据库绑定这几天遇到再DropDownList中,如何将数据库中的内容与DropDownList下拉框中的值关联起来,步骤如下:(1)建立要关联的数据库(在本例中假设为dept);要定义一个数据表用来取得这个表中的内容,代码如下:publicDataTableReaderSelectDept(){DataTableReaderdr=null;try{RunSQL

    2022年10月8日
    0
  • ping和tracert都是利用_tracert超时

    ping和tracert都是利用_tracert超时windows中的tracert使用的icmp,linux中使用的traceroute是udp报文和icmp返回(??)windows为例:tracert用法一般直接使用tracerthostname[ip]即可tracertbaidu.comtracert39.156.69.79需要快速完成命令可以不将地址解析成主机名并设置超时时间tracert-d-w200baidu.com第一列是条数,第2-4是每次返回的时延(每个地址会请求三…

    2022年9月16日
    0
  • 用Attributes.Add添加事件

    用Attributes.Add添加事件1、(textbox2.Visible=true)JS的寫法:    textbox2.Attributes.Add(“onfocus”,”document.getElementById(‘textbox2’).style.display=”);2、(textbox2.Visible=false)JS的寫法:    textbox2.Attributes.Add(“onfocus”,”document.getElementById(‘textbox2’).style.display=’no

    2022年9月26日
    0
  • unity麻将开发视频教程_一屏双人单机手机游戏

    unity麻将开发视频教程_一屏双人单机手机游戏小实习生一枚,刚入门unity,利用一周的时间做了个单机简单的二人小麻将只有java基础,从来没学过C#的我,刚开始很懵逼,但是既然动手做了就开始吧~!先上成品图因为公司都用比较稳定的版本,所以我是从比较老的版本unity4.7上手学习的刚开始学什么都不懂,参考了一个别人写的斗地主demo,所以代码比较累赘…你们可以改良一下二人麻将介绍牌型分为:条

    2022年8月29日
    2
  • mac上好用的录屏软件_mac可用的录屏软件

    mac上好用的录屏软件_mac可用的录屏软件因为工作缘故,需要经常使用录屏软件,然鹅在网上找了很久都是推荐我Quicktime,不要说众所周知的事情好吗[手动捂脸],今天给大家介绍几个我觉得挺不错的Mac录屏软件,希望你们也pick哈!放在第一说明我对他的热爱~很难找到又有简体中文,界面又好看,录屏功能又强大的软件,高举国货大旗~我感觉Quicktime的录制需要手动调节窗口实在是不友好,而这个软件就能支持多种范围的录制方式,支持1920X…

    2022年9月24日
    0
  • 国产数据库乱象_四代户户通怎么开户

    国产数据库乱象_四代户户通怎么开户其实这篇文章是我周末开始写的,写这篇文章的这个周末,我的很多时候都是在思考一个数据库国产化替代的建设方案,翻阅了大量的资料。今年正好是我参加工作后的第31个年头,工作的最初十年,我写了十年代码,从汇编、COBOL到C语言,写了几十万行代码;随后的十几年,我一直在帮助用户用好数据库,也在帮助Oracle推广RAC技术;2015年开始,我一边继续从事数据库优化的工作,一边在帮助客户如何从Oracle迁移到成本更低的数据库系统上。所以对国产数据库我一直有一种十分特殊的情感,这是一种爱恨交织的情感。所以今天最后用“

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号