Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.
This problem requires that you write a program to compute the exact value of Rnwhere R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
95.123 12 0.4321 20 5.1234 15 6.7592 9 98.999 10 1.0100 12
548815620517731830194541.899025343415715973535967221869852721 .00000005148554641076956121994511276767154838481760200726351203835429763013462401 43992025569.928573701266488041146654993318703707511666295476720493953024 29448126.764121021618164430206909037173276672 90429072743629540498.107596019456651774561044010001 1.126825030131969720661201大致题意:
#include<iostream> using namespace std; int main() { char ch[6]; //用字符数组来接收浮点数 int power; //阶数 while(cin>>ch>>power) { int result[125]={0}; int tail=5,head=0; int after=0; while(ch[tail]=='0') tail--; while(ch[head]!='.') head++; after=tail-head; //小数点后面的数的位数 int i=0; int base=0; int p=1; int pow=power; while(tail>=0)//小数点后数的个数 { if(ch[tail]!='.')//把所有数存入数组 { result[i]=ch[tail]-'0';//去真是数值 base+=(ch[tail]-'0')*p;//存储小树点末尾的数 i++;//记录小数点后数的个数 p*=10; } tail--; } /** 逆序存储所有非0数 int q = 0 ; while(q<i) { cout<<result[q] ; q++ ; } **/ while(power>1)//计算阶乘 { tail=0; while(tail<i) { result[tail]=base*result[tail]; tail++; } int j=0; int before=0; int mid=0; while(j<i) { mid=(result[j]+before)%10; before=(result[j]+before)/10; result[j]=mid; // cout<<mid<<endl ; j++; } while(before>0) { result[i]=before%10; before/=10; i++; } power--; } after*=pow;//小数点的总位数 /** while(i>=0) { cout<<result[i]; i--; } **/ if(after>=i)//移位数大于总数的位数 { int zero=after-i;//小数点后添0的个数 cout<<"."; while(zero>0) { cout<<"0"; zero--; } i--; while(i>=0) { cout<<result[i]; i--; } } else if(after<i) { i--; while(i>=0) { if(after-i==1) cout<<"."<<result[i]; else cout<<result[i]; i--; } } cout<<endl; } }我写了一些注释,可以调用pow函数,这个计算式自己写的:
#include<stdio.h> int main() { char ch[6]; int power ; while(scanf("%s%d",&ch,&power)!=EOF) { int result[125]={0}; int tail=5,head=0; int after=0; while(ch[tail]=='0') tail--; while(ch[head]!='.') head++; after=tail-head; //小数点后面的数的位数 int i=0; int base=0; int p=1; int pow=power; while(tail>=0)//小数点后数的个数 { if(ch[tail]!='.')//把所有数存入数组 { result[i]=ch[tail]-'0';//去真是数值 base+=(ch[tail]-'0')*p;//存储小树点末尾的数 i++;//记录小数点后数的个数 p*=10; } tail--; } /** 逆序存储所有非0数 int q = 0 ; while(q<i) { cout<<result[q] ; q++ ; } **/ while(power>1)//计算阶乘 { tail=0; while(tail<i) { result[tail]=base*result[tail]; tail++; } int j=0; int before=0; int mid=0; while(j<i) { mid=(result[j]+before)%10; before=(result[j]+before)/10; result[j]=mid; // cout<<mid<<endl ; j++; } while(before>0) { result[i]=before%10; before/=10; i++; } power--; } after*=pow;//小数点的总位数 /** while(i>=0) { cout<<result[i]; i--; } **/ if(after>=i)//移位数大于总数的位数 { int zero=after-i;//小数点后添0的个数 printf("%c",'.') ; while(zero>0) { printf("%d",0) ; zero--; } i--; while(i>=0) { printf("%d",result[i]) ; i--; } } else if(after<i) { i--; while(i>=0) { if(after-i==1) printf("%c%d",'.',result[i]) ; else printf("%d",result[i]) ; i--; } } printf("\n"); } }scanf("%s%d",&ch,&power)!=EOF
import java.math.BigDecimal; import java.util.Scanner; /** * 高精度计算 * @author tanlvxu * */ public class Main{ /** * @param args */ public static void main(String[] args) { Scanner cin = new Scanner(System.in) ; while(cin.hasNext()) { BigDecimal x = cin.nextBigDecimal() ; BigDecimal y = BigDecimal.valueOf(1.0) ; int n = cin.nextInt() ; for(int i=1;i<=n;i++) { y = y.multiply(x) ; } String out = new String(y.toPlainString()) ; boolean flag = false ; int q = out.length() - 1 ; //去掉后面的0 while(out.charAt(q)=='0'){ q-- ; } if(out.charAt(q)=='.') { q-- ; } int p = 0 ; //去掉前面多余的0 while(out.charAt(p)=='0') p++ ; for(int i=p;i<=q;i++) { System.out.print(out.charAt(i)) ; } System.out.println(); } } }或者也可以这样:
import java.math.BigDecimal; import java.util.Scanner; public class Demo5 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in) ; while(cin.hasNext()) { BigDecimal x = cin.nextBigDecimal() ; int n = cin.nextInt() ; x = x.pow(n); String str = x.toPlainString() ; int q = str.length() - 1 ; while(str.charAt(q)=='0') { q -- ; } if(str.charAt(q)=='.') { q-- ; } int p = 0 ; while(str.charAt(p)=='0') { p++ ; } for(;p<=q;p++) { System.out.print(str.charAt(p)); } System.out.println() ; } } }
BigDecimal |
pow(int n) 返回其值为 (thisn) 的 BigDecimal,准确计算该幂,使其具有无限精度。 |
相关推荐
标题中的“HP 1001固网驱动”指的是HP公司生产的型号为1001的网络打印服务器的驱动程序。HP(Hewlett-Packard)是一家全球知名的科技公司,其产品线涵盖打印机、计算机硬件等多个领域。在这个特定的情况下,我们关注...
《NST1001应用手册 1.0》是针对NST1001这款接触式温度集成电路的专业开发指南,旨在为工程师和开发者提供详尽的技术资料和应用指导。这款手册结合了理论与实践,深入浅出地介绍了NST1001的各项功能特性,以及如何在...
《1001 Bit Tools 1.1.5:实用工具箱的全面解析》 在IT领域,一款全面且易用的工具集合软件是每个技术爱好者和专业人员的必备。"1001 Bit Tools 1.1.5 简体中文版"就是这样一款强大的工具集,它为用户提供了一系列...
在本文中,我们将深入探讨如何在51单片机STC12C5A60S2上使用NST1001温度传感器进行数据采集。NST1001是一款常用的数字温度传感器,它能提供精确的温度测量值,并且与微控制器的接口简单,非常适合在各种嵌入式系统中...
请注意,以下示例包含使用 DWM1001C 的 UWB 功能的非常基本的应用程序。 符合法规的 DWM1001C 高级固件可在https://www.decawave.com/product/dwm1001-module/上找到 概述 该项目包含 DWM1001 硬件及其衍生产品的 ...
百瑞科技的BR1001是一款蓝牙SoC产品,它是一个针对2.4GHz蓝牙低功耗(BLE)无线微控制器应用的定制系统芯片(SoC)。BR1001集成了2.4GHz ISM频段射频收发器,用于无线连接,并且内部包含了一个单个低功耗32位RISC ...
1001bit Tools (1001bit 建筑工具集),1001bit_pro v2.1建模插件中文汉化版(比suapp还好用还全面的SketchUp插件,支持SketchUp8.0,2013,2014,2015) 可以自由添加减少要的图标,从此不再被各种各样眼花缭乱的插件所...
这里我们关注的是“1001序列检测器”,它是一种用于检测特定序列(在这种情况下可能是1001)的数字逻辑电路。模型模拟器(Modelsim)是一款广泛使用的仿真工具,特别适合于这样的任务。 首先,我们要理解序列检测器...
本压缩包文件"驱动程序-打印机驱动-固网hp1001打印服务器驱动.zip"是专为固网hp1001打印服务器设计的驱动程序集合,旨在确保该打印服务器能够与电脑系统无缝协作。 固网hp1001打印服务器是一种网络打印解决方案,...
根据提供的文件信息,DWM1001原理图涉及到以下几个主要知识点: 1. DWM1001模块概述: DWM1001是Decawave公司开发的一款超宽带(Ultra Wideband,简称UWB)无线通信模块,适用于室内定位和追踪系统。该模块集成了...
IP1001是一款集成的物理层设备,适用于1000BASE-T、100BASE-TX和10BASE-T网络应用。这款设备支持多种媒体访问控制器(MAC)的接口,包括介质独立接口(MII)、千兆介质独立接口(GMII)和简化千兆介质独立接口...
《IP1001数据手册》是一份详细阐述IP1001硬件特性和应用的文档,对于硬件设计工程师来说,是进行相关产品开发的重要参考资料。这份手册包含了硬件设计的关键信息,如芯片封装、电气特性、接口定义以及操作指南等。...
"1001 bit pro 2.1中文for2014-2015"是一个软件产品,根据其标题和描述,我们可以推测这是一款专为2014至2015年设计的中文版专业软件。"1001 bit"可能是该软件系列或公司的名称,标签进一步确认了这一主题。尽管没有...
《EXCEL VBA 范例应用大全1001例》是一本全面介绍Excel VBA编程技术的实用教程,其特色在于提供了大量的实例,帮助读者深入理解和掌握VBA在Excel中的应用。这本书旨在帮助Excel用户提升工作效率,通过编写自定义宏和...
### DWM1001模块概述 DWM1001模块是一款基于Decawave公司DW1000 Ultra Wideband (UWB) 收发器芯片的产品,它符合IEEE 802.15.4-2011 UWB标准。此模块集成了UWB天线、蓝牙天线、所有射频电路、Nordic Semiconductor ...
HR1001C是增强型LLC控制器 这提供了自适应的死区时间调整 (ADTA)和电容模式保护(CMP) 特性,以及功能上的改进 飙升的性能。 ADTA在两者之间插入了一个死区 互补门自动输出。这 是否通过保持输出关闭来确保 感应半桥...
《TDT 1001-2012地籍调查规程》是中国土地调查领域的标准规范,它详细规定了地籍调查的全过程,包括调查的原则、方法、程序、技术要求和成果管理等内容。这一规程对我国的土地管理和规划具有重要的指导意义,确保了...
sketchup 1001插件,2014-15汉化版,自用没有问题sketchup 1001插件,2014-15汉化版,自用没有问题sketchup 1001插件,2014-15汉化版,自用没有问题sketchup 1001插件,2014-15汉化版,自用没有问题sketchup 1001...
机型:HZ55A52(1001) BOM:3 编号:C004 方案:MSD648 版本号:Z55.V1001.A52.00.00.01A.K0204 U盘升级方法: 将下载的程序解压到U盘根目录下,即根目录下有个TargetHis文件夹。 U盘采用FAT32格式, 自动升级: ...