POJ 1001 Exponentiation(大数运算)
时限:500 ms | 内存限制:10000 K | |
提交材料共计: 179923 | 接受: 43369 |
描述:求得数R( 0.0 < R < 99.999 )的n( 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
分析:题中R的n次方远大于double的范围,那么就会想到用数组来存放结果,题目就变成了两个非常大的数相乘,小数相乘可以先把小数点去除,先算出小数点在结果中的位置,再直接计算两个整数相乘的值。
举例:95.123 12
求95.123的12次方的值,即先去除小数点,计算出小数点的位置(3 * 12 = 36), 再把95123相乘12次得出结果,输出时再插入小数点。
代码:
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int N = ;
int result[N];
int temp[N];
int main() {
string str;
int n;
while(cin >> str >> n) {
for(int i = ; i < N; i++) result[i] = ;
result[] = ;
int m = ;
int cs[] = {};
int pos;
for(int i = str.size() - ; i >= ; i--) { //去除小数点
if(str[i] != '.') cs[m++] = str[i] - '';
else pos = i;
}
int point = ( - pos)*n;
for(int i = ; i < n; i++) {
for(int j = ; j < N; j++) temp[j] = ;
for(int j = ; j < ; j++) {
if(!cs[j]) continue; //如果乘数为0,那么无需向下执行
int c;
for(int k = ; k < N; k++) { //加到对应的位数上
c = result[k] * cs[j];
temp[k+j] += c;
}
for(int k = ; k < N; k++) { //处理进位
if(temp[k] >= ) {
temp[k+] += temp[k]/;
temp[k] %= ;
}
}
}
for(int j = ; j < N; j++) result[j] = temp[j]; //转存
}
int l = ;
while(!result[l] && l < point) l++;
int r = N - ;
while(!result[r] && r >= point) r--;
for(int i = r; i >= point; i--) cout << result[i];
if(l < point) cout << "."; //如果的小数,那么输出小数点
for(int i = point - ; i >= l; i--) cout << result[i];
cout << endl;
}
return ;
}
POJ 1001 Exponentiation(大数运算)的更多相关文章
- [POJ] #1001# Exponentiation : 大数乘法
一. 题目 Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 156373 Accepted: ...
- [POJ 1001] Exponentiation C++解题报告 JAVA解题报告
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 126980 Accepted: 30 ...
- POJ 1001 Exponentiation 无限大数的指数乘法 题解
POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...
- poj 1001 Exponentiation 第一题 高精度 乘方 难度:1(非java)
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 138526 Accepted: 33859 ...
- POJ 1001 Exponentiation(JAVA,BigDecimal->String)
题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static voi ...
- POJ 1001 Exponentiation
题意:求c的n次幂……要求保留所有小数…… 解法:一开始只知道有BigInteger……java大数+模拟.第一次写java大数……各种报错各种exception……ORZ 没有前导0和小数后面的补位 ...
- 1001. Exponentiation高精度运算总结
解题思路 这道题属于高精度乘法运算,要求输入一个实数R一个指数N,求实数R的N次方,由于R有5个数位,而N又特别大,因此用C++自带的数据类型放不下. 解题思路是通过数组储存每次乘积结果和底数的每一位 ...
- POJ 1001 Exponentiation 模拟小数幂
模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...
- HOJ 2148&POJ 2680(DP递推,加大数运算)
Computer Transformation Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4561 Accepted: 17 ...
随机推荐
- 历次PCB板修改意见汇总
历次PCB板修改意见汇总: 1 对于主控芯片,建议参考官方的PCB布局,官方的PCB布局肯定是为了最大程度的发挥主控的性能. 2 LDO要选择低功耗的,静态电流越小越好,估算一下板子的最大电流,选择L ...
- Study之2 Glance相关操作-devstack
1,Glance的image是存储在backend中,backend配置在: /etc/glance/glance-api.conf.2, devstack默认:image 存放在控制节点本地目录 / ...
- Centos 7 Docker安装配置
版本介绍 Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE.社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设 ...
- 算法笔记--字典树(trie 树)&& ac自动机 && 可持久化trie
字典树 简介:字典树,又称单词查找树,Trie树,是一种树形结构,是哈希树的变种. 优点:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较. 性质:根节点不包含字符,除根节点外每一个 ...
- redhat 7.0 配置Bond
把/etc/sysconfig/network-scripts/目录下的ifcfg-bond*文件手动移动到/tmp目录. 重启网络:systemctl restart NetworkManager ...
- 全栈性能测试修炼宝典--Jmeter实战(一)
性能测试方向职业发展 1.软件测试发展路线 我们可以暂且把软件测试职业路线分为3个方向,分别是业务路线.技术路线.管理路线:4个象限,分别为执行层.中层.中高层过渡.高层. (1)业务路线 常见业务路 ...
- 动态规划-独特的子字符串存在于Wraparound String总个数 Unique Substrings in Wraparound String
2018-09-01 22:50:59 问题描述: 问题求解: 如果单纯的遍历判断,那么如何去重保证unique是一个很困难的事情,事实上最初我就困在了这个点上. 后来发现是一个动态规划的问题,可以将 ...
- Notepad++安装json插件
安装 : 1.下载插件压缩包并解压出dll:NPPJSONViewer.dll(64位) 下载地址:https://pan.baidu.com/s/1JeBzrovb-GHRo14vO-AnJA 提 ...
- Sublime Text 安装插件时出现There are no packages available for installation解决步骤
1.点击 ctrl+`打开控制台后,发现是因为http://packagecontrol.io/channel_v3.json 获取失败,下载v3.json(在百度云盘) 2.找到Sublime\Da ...
- 1.2 面向对象 Object-oriented
前导课程 1.UML(统一建模语言) 2.OOAD Concept(Object-oriented Analysis and Design 概念) 3.Design Pattern(设计模式) 4.面 ...