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;
		}
	}
}
【实战指南】EC-Engineer中ESI配置与PDO Mapping全流程解析 本文详细解析了EC-Engineer中ESI配置与PDO Mapping的全流程操作,包括环境准备、ESI文件导入技巧、在线配置细节及故障处理。特别强调了WinPcap驱动的兼容性问题和PDO Mapping的最佳实践,帮助工程师高效完成EtherCAT总线配置,适用于工业自动化领域的伺服控制与运动协同场景。 阅读详情

相关推荐

自动驾驶预测决策规划八股

预测规划八股个人总结。

dawushixiange的博客 479

POJ 1001——高精度快速幂

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

qq_43513855的博客 1228

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 958

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

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4550

深入解析Android14应用安装权限:从声明到授予的完整适配指南

本文深入解析Android14应用安装权限的适配方法,重点介绍了从权限声明到授予的完整流程。与Android13相比,Android14在权限管理机制上进行了重要调整,特别是通过AppOpsManager实现权限的对象化封装。文章详细讲解了权限声明的基础配置、Framework层适配方案、运行时权限授予方法以及常见问题排查指南,帮助开发者高效完成Android14权限适配。

o9p0q1的博客 696

求高精度幂(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

C# 开发 WPS 插件实战:从环境搭建到功能实现(附完整代码)

本文提供了一份详尽的C#开发WPS插件实战指南,涵盖从环境搭建到功能实现的完整流程。通过COM技术,开发者可以创建自定义插件,为WPS Office扩展自动化功能,如文档处理与格式转换。文章包含核心概念解析、Ribbon界面集成、调试部署方法及完整代码示例,帮助开发者快速上手。

rust6ferris的博客 928

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

实验二 离散控制系统的性能分析(时域/频域)

1.掌握离散闭环系统的动态性能时域参数的分析与计算方法; 2.掌握离散系统稳定性的频域典型参数分析与计算方法。 MATLAB 软件( 2022a); 1.在 Matlab 语言平台上,通过给定的闭环离散系统,深刻理解时域参数的物理意义与计算方法,内容包括如下: 阻尼比参数分析:Z 平面与 S 平面的极点相互转换编程实现;分析 S/Z 两个平面域特殊特性(水平线、垂直线、斜线、圆周等)的极点轨迹相互映射方法;系统阶跃响应参数:上升时间和超调量等。 2. 采用频域分析方法,通过编程计算,进一步理解离散系统的稳定

m0_51738372的博客 2479

把消息说清楚:OData V2 的 sap-message、错误体 errordetails 与 ABAP 端落地实践(Gateway Foundation / RAP)

OData V2消息机制解析:SAP业务系统的结构化通信设计 本文深入剖析了SAP系统中OData V2协议的消息传递机制。该设计通过双通道(成功时使用sap-message响应头,失败时采用error响应体)实现业务数据与提示信息的结构化分离,解决了企业级应用中"只返回业务数据"或"简单报错"的不足。文章详细解读了消息结构中的关键要素:target字段实现精准UI定位、severity级别控制交互流程、transition标记区分状态消息与过渡消息。同时揭示了SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 852

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

深入RKNN Toolkit2:自定义算子与内存优化秘籍

本文系统探讨了RKNNToolkit2在模型转换中的关键技术与优化策略。首先介绍了该工具包的基础功能及模型转换流程,重点阐述了自定义算子的实现方法,包括算子分析、代码编写和注册集成等步骤,并以ReduceLogSumExp算子为例进行案例分析。在内存优化方面,详细论述了模型量化、内存复用和参数配置等策略,通过具体案例展示优化效果。最后结合智能安防项目实践,分享了YOLOv5模型部署经验及问题解决方案。文章指出,随着AI技术发展,RKNNToolkit2将在算子支持、量化技术和硬件适配等方面持续优化,为边缘计

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1389

poj 1001 Exponentiation(求高精度幂)

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

u011337574的专栏 709

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

piano7heart的专栏 1102

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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、付费专栏及课程。

余额充值