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(大数运算)的更多相关文章

  1. [POJ] #1001# Exponentiation : 大数乘法

    一. 题目 Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 156373   Accepted: ...

  2. [POJ 1001] Exponentiation C++解题报告 JAVA解题报告

        Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 126980   Accepted: 30 ...

  3. POJ 1001 Exponentiation 无限大数的指数乘法 题解

    POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...

  4. poj 1001 Exponentiation 第一题 高精度 乘方 难度:1(非java)

    Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 138526   Accepted: 33859 ...

  5. POJ 1001 Exponentiation(JAVA,BigDecimal->String)

    题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static voi ...

  6. POJ 1001 Exponentiation

    题意:求c的n次幂……要求保留所有小数…… 解法:一开始只知道有BigInteger……java大数+模拟.第一次写java大数……各种报错各种exception……ORZ 没有前导0和小数后面的补位 ...

  7. 1001. Exponentiation高精度运算总结

    解题思路 这道题属于高精度乘法运算,要求输入一个实数R一个指数N,求实数R的N次方,由于R有5个数位,而N又特别大,因此用C++自带的数据类型放不下. 解题思路是通过数组储存每次乘积结果和底数的每一位 ...

  8. POJ 1001 Exponentiation 模拟小数幂

    模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...

  9. HOJ 2148&POJ 2680(DP递推,加大数运算)

    Computer Transformation Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4561 Accepted: 17 ...

随机推荐

  1. How Many O's? UVA - 11038

    这个题个人感觉有点难,不容易理解. 题意 给你两个数,n,m,找出从n到m所有的数一共包含几个0,看似简单,包含0的不就都是整数么,然后就用暴力循环来找,绝对TL.我自己写这题也没有什么好的办法,没有 ...

  2. leecode第七十题(爬楼梯)

    class Solution { public: int climbStairs(int n) { vector<unsigned long long> num;//斐波那契数列 num. ...

  3. 学习笔记48—PS画虚线

    PS画虚线步骤: 1)我们打开PS后,随便新建一个文件. 2)大小随意. 2)我们选择画笔工具,快捷键是B. 3)画笔面板的快捷键是F5. 4)点击画笔预设面板,再点击右边右上角的下三角,在弹出的菜单 ...

  4. Java面试宝典(说说&和&&的区别)

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false. ...

  5. 牛客国庆集训派对Day3 A Knight

    Knight 思路: bfs打表找规律 如下图 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) ...

  6. iframe和ajax文件上传方法

    为什么使用这两种方法文件上传呢,主要是因为局部刷新问题 上传问题,主要是使用form表单,或者用请求一个文件上传 iframe 大多网站都是有一个整体的固定结构,然后进行局部刷新,我们可以使用AJAX ...

  7. Python全栈开发-Day2-Python基础2

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  8. English trip EM2-LP-1A Hi Teacher:Taylor

    课上内容(Lesson) 词汇(Key Word ) Introduce  vt. 介绍:引进:提出:采用 greet  [ɡrit]  vt. 欢迎,迎接:致敬,致意:映入眼帘  n. (Greet ...

  9. LeetCode--345--反转字符串中的元音字母

    问题描述: 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle" 示例 2: 输入: &quo ...

  10. Centos7 下coreseek的安装

    Coreseek介绍: Sphinx默认不支持中文索引及检索,基于Sphinx开发了Coreseek 全文检索服务器,Coreseek应该是现在用的最多的Sphinx中文全文检索,它提供了为Sphin ...