POJ 1001 Exponentiation 求高精度幂

POJ1001 (求高精度幂,Exponentiation,C++) 北京大学程序在线评测系统 (“PekingUniversityOnlineJudge”) POJ1001 (求高精度幂,Exponentiation,C++) 题目的网址 题目大意是对一个实数R( 0.0 < R < 99.999 ),精确计算 R 的 n 次方,其中n 是整数并且 0 < n <= 25。 具体思路在代码中的注释中都有体现,不做过多解释。 话不多说,具体代... 阅读详情

题目链接

Description
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 Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
Input
The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.
Output
The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don’t print the decimal point if the result is an integer.
Sample Input
95.123 12
0.4321 20
5.1234 15
6.7592 9
98.999 10
1.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

解题思路:
高精度乘法,使用数组来保存高精度实数,先将小数相乘转化为整数相乘,输出时再考虑小数点的位置,同时也要需要注意前置零与后置零的处理。

AC代码:

#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int a[1001], b[1001];//保存相乘的2个高精度实数
int tmp[10001];//保存临时结果
int la, lb;
void mul() {//两个高精度实数相乘
	for (int i = 0; i <= 10000; i++)tmp[i] = 0;//注意每次相乘都要事先将临时结果初始化!
	for (int i = 0; i < la; i++) {
		for (int j = 0; j < lb; j++) {
			tmp[i + j] += a[i] * b[j];
			if (tmp[i + j] > 9) {
				tmp[i + j + 1] += tmp[i + j] / 10;
				tmp[i + j] %= 10;
			}
		}
	}
	//按照可能的最大长度来保存
	la += lb;
	for (int i = 0; i < la; i++) {
		a[i] = tmp[i];
	}
}
int main() {
	char s[10]; int n;
	while (scanf("%s %d", s, &n) != EOF) {
		int pos = -1; int j = 0;
		//pos用于保存小数点的位置
		for (int i = 5; i >= 0; i--) {
			if (s[i] == '.') {
				pos = i;
			}
			else {
				a[j] = s[i] - '0';
				b[j] = a[j];
				j++;
			}
		}//j为5or 6
		la = lb = j;
		for (int t = 1; t < n; t++) {
			mul();
		}
		int l = 0, r = la - 1;
		pos = (lb - pos)*n;//小数点的位置
		if (lb == 6) {//无小数点的情况
			for (int i = la - 1; i >= 0; i--) {
				cout << a[i];
			}
			cout << endl;
			continue;
		}
		else {
			while (a[l] == 0 && l <= r) { l++; }//后置零
			while (a[r] == 0 && r >= l) { r--; }//前置零
			if (r < pos) { r = pos - 1; }
			if (l > pos) { l = pos; pos = -1; }
			//cout << pos << endl;
			for (int i = r; i >= l; i--) {
				if (i == pos-1) {//因为从位置0出开始保存,因此小数点与pos-1处的数字前
					cout << ".";
				}
				cout << a[i];
			}
			cout << endl;
		}
	}
}
PADS安装教程(超详细) 声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录 阅读详情

相关推荐

UR5 机械臂手眼标定(Eye-in-Hand)实战:OpenCV 求解 AX=XB,误差 < 2mm

本文详细介绍了UR5机械臂在Eye-in-Hand配置下的手眼标定实战,通过OpenCV实现高精度标定,最终达到误差小于2mm的工业级精度要求。文章涵盖了标定基础原理、环境搭建、数据采集策略、核心算法实现及误差分析与优化,为视觉机械臂的自主抓取提供了实用指南。

weixin_31476015的博客 295

POJ 1001——高精度快速幂

POJ 1001——高精度快速幂 本题主要用到两个东西,一个是高精度,一个是快速幂。 虽然是浮点数的乘法,但是实际上可以转化为整数的乘法,然后再用高精度乘法,高精度算法本身不难,但是在没重载运算符的情况下使用数组还是挺麻烦的,不少地方的初始化都需要特别注意。 关于数组的初始化: 数组名在函数内部时,它的sizeof数组名获得的是数组本身的长度,而数组作为函数形参的时候,sizeof获得的是这个指针本身的长度,这一点特别坑,这会导致memset函数出现问题。 关于快速幂: 快速幂是一种快速求出数字的幂的方法,

qq_43513855的博客 1228

【eNSP 华为模拟器】小型校园网模拟环境的设计与配置(附eNSP源文件)

【eNSP 华为模拟器】小型校园网模拟环境的设计与配置 一、实验概述 二、交换机的配置 2.1 二层交换机的配置 2.2 三层交换机的配置 三、路由器的配置 四、实验结果 五、实验总结 一、实验概述 按照以下的拓扑连接,自行设计VLAN和IP地址等网络参数,实现PC1到PC2的IP通信。其中,R1,R2为路由器;LSW1,LSW4为3层交换机;LSW2,LSW3 ,LSW6, LSW7为2层交换机;CLIENT1-CLIENT12为PC机。 拓扑图 课程设计要求:(1)IP地址自行规划设计,应该清晰地

qq_43757282的博客 4万+

pku_1001_Exponentiation(求高精度的幂)

题意: 求一个实数R的n次幂  即ans = R ^ n;方法: 模拟高精度乘法两个大数相乘,以字符串输入,用数组a[], b[]按位存储,最终结果用另外一个数组c[]存储核心代码: memset(c, 0, sizeof(c)); //初始化结果数组 for(i = 0; i &lt; l1; i++) for(j = 0; j &lt; l2; j++) { ...

weixin_33785108的博客 141

FreeModbus从入门到实战:手把手教你用STM32实现工业级Modbus RTU通信

本文详细介绍了如何使用STM32和FreeModbus实现工业级Modbus RTU通信,涵盖硬件搭建、协议栈移植及优化技巧。重点解析了FreeModbus的移植过程,包括串口驱动适配、定时器配置和工业级稳定性优化,为开发者提供了一套完整的工业通信解决方案。

weixin_33737774的博客 350

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

张天枭の博客 5万+

求高精度幂(Poj 1001)

Description对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 &lt; R &lt; 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 &lt; n &lt;= 25。InputT输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8...

星辰_大海的博客 545

【EMC专题】为什么芯片规格书ESD性能中看不到MM(机器放电模型)

器件级ESD包括三种类型,HBM人体放电模型、MM机械放电模型和CDM元件充电模型。但在芯片规格书中为什么只见到HBM模型与CDM模型,却没有看到MM模型的数据?

一点硬件 450

POJ 1001Exponentiation解题报告——求高精度幂

http://poj.org/problem?id=1001/* DescriptionProblems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a t

wangdeqiang2007的博客 499

【11】科曼医疗——科曼医疗 嵌入式--面试,校招,面试问答记录

科曼医疗嵌入式校招面试记录:3位面试官分别考察应用层技术、底层技术和HR面。技术问题涵盖C++特性(多态、虚函数、指针与引用区别)、内存管理(malloc与new对比)、嵌入式基础(51最小系统、IIC/SPI协议)及项目经验(智能黑板擦专利项目)。同时考察了Linux使用经验、STM32开发及嵌入式操作系统认知。最后环节应聘者询问了开发环境及面试流程。面试内容全面覆盖嵌入式开发核心知识点。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1252

YOLOv11 热力图可视化全流程:从模型解释到科研论证,让检测结果“有理可看”

无论是科研中需要严谨的模型解释,还是工业里要高效的缺陷定位,这套方法都能让你在“模型黑箱”与“业务需求”之间架起一座可视化的桥梁。别再让模型决策“无据可依”——现在就动手生成你的第一幅热力图,让 YOLOv11 的每一次检测都“有理可看”,用可视化的力量推动你的 AI 研究与落地走向深入!某团队在论文中通过热力图对比,证明其改进的注意力模块可使模型对小目标的关注区域更精准,实验论证说服力提升 50%;工业质检场景下,热力图帮助工程师快速定位模型漏检缺陷的原因——原来是对某类缺陷的特征关注不足。

m0_71589036的博客 678

PoJ1001,高精度求幂Exponentiation

接触这道题的时候还不了解大整数相乘,所以以下代码没有任何借鉴。 Exponentiation Description Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the nati...

weixin_44630656的博客 215

华为OD机试真题 新系统 9月27号 【数据中心最佳维护窗口】

华为OD机试真题 新系统【数据中心最佳维护窗口】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【数据中心最佳维护窗口】多语言题解。

qq_45776114的博客 1164

poj 1001 Exponentiation(求高精度幂)

题目描述: 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 分析: 这个算法也没有难度,但是需要注意的地方就是精度问题,java中如果涉及到精度问题,我们可以选择已经封装好的类BigDecimal,这个类,用来对超过16位有效位的数进行

u011337574的专栏 709

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

POJ 1001Exponentiation解题报告——求高精度幂——【PKU ACM】

这道题目的整体思想,就是将float型数据,转化成整数,将计算float型幂次方,转变成求整数的幂次方。 然后利用数组来存储乘积的每一位。 核心代码就是那一段高精度求幂的代码,希望大家能够自己仔细研究。 #include #include #include using namespace std; int main(){ string r; //输入的底数 int n; /

piano7heart的专栏 1102

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ 1001-Exponentiation(NYOJ 155 求高精度幂):大数问题

点击打开链接 Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 120472   Accepted: 29411 Description Problems involving the computation of exact

云淡风清 845

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ_1001(Exponentiation) 求高精度幂 攻略中...

题目如下: Description 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

Algorithm攻略日记 602

UVa 748 / POJ 1001 Exponentiation (浮点高精度求幂&正则表达式的应用)

str = str.replaceFirst("^0*", "");

AC,∑ndless 1568

hdu_1063,poj_1001_Exponentiation(大数,高精度) nyoj_155_求高精度幂

Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 121666   Accepted: 29731 Description Problems involving the computation of exact values of very l

逆水行舟 777

POJ 1001 Exponentiation - 高精度高位数运算

/* * POJ 1001 Exponentiation * 求R^n, 其中0.0 < R < 99.999, 0 < n <= 25; * * 1) 高精度高位数计算; * 2) 将字符串转换为数组,按位计算; * 3) 采用连乘求幂 或 将次数转换为二进制数以减少相乘次数; * */#include using namespace std;#define MAX_NUMBER_LENGTH

ChenK在学习! 1005

POJ1001 Exponentiation【高精度乘方】

题目: Description 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

淡然坊 1620

POJ解题报告——1001 Exponentiation

POJ解题报告——1001 Exponentiation问题描述求高精度幂,输入是一个实数 R (0.0 < R < 99.999) 和 指数 n (0 < n <= 25), 要求精确计算 R 的 n 次方(Rn)。如 95.123 12 结果为548815620517731830194541.899025343415715973535967221869852721详见 http://poj.

drop_k的博客 508

POJ 1001 Exponentiation

POJ 1001 Exponentiation 心血来潮花了一上午做了这道恶心死人的高精度。展示一下打了各种补丁的程序。 type gj=record len:longint; data:array[1..1000]of longi...

aimifeng9177的博客 179

高精度浮点数计算 poj 1001 Exponentiation

poj 1001 Exponentiation Time Limit Memory Limit Total Submissions Accepted 500ms 10000k 185164 44572 Descrimination   Problems involving the computation of exact values of very large magnitu...

weixin_40215124的博客 503

POJ1001 Exponentiation 高精度

求高精度幂 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 &lt; R &lt; 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 &lt; n &lt;= 25。 Input T输入包括多组 R 和 n。 R 的值占第 1 到...

Yerkeys的博客 262

【北大poj】1001 Exponentiation

北大poj 1001 Exponentiation Description 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...

red_velvet_cake的博客 292
上一篇: Markdown 写博客可能会用到的组件 (持续更新)
下一篇: 牛客网 a+b 九度教程第60题 高精度整数相加
RPG_Zero
博客等级 码龄8年 77粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值