1001. 求高精度幂

POJ 1001 求高精度幂(高精度) Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。 Output 对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后 阅读详情

1001. 求高精度幂

Description

对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。

现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。

Input

T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。

Output

对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。

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

代码

#include<iostream>
#include<string>
#include<vector>
#include <cmath>
using namespace std;
char* itoa(int num, char*str, int radix)
{/*索引表*/
    char index[] = "0123456789ABCDEF";
    unsigned unum;/*中间变量*/
    int i = 0, j, k;
    /*确定unum的值*/
    if (radix == 10 && num < 0)/*十进制负数*/
    {
        unum = (unsigned)-num;
        str[i++] = '-';
    }
    else unum = (unsigned)num;/*其他情况*/
                              /*转换*/
    do {
        str[i++] = index[unum % (unsigned)radix];
        unum /= radix;
    } while (unum);
    str[i] = '\0';
    /*逆序*/
    if (str[0] == '-')k = 1;/*十进制负数*/
    else k = 0;
    char temp;
    for (j = k; j <= (i - 1) / 2; j++)
    {
        temp = str[j];
        str[j] = str[i - 1 + k - j];
        str[i - 1 + k - j] = temp;
    }
    return str;
}
string getTimes(string s,string s2) {
    string res2;
    vector<string> res;
    for (int i = s2.size() - 1; i >= 0; i--) {
        int j = s.size() - 1, shang = 0;
        string ss;
        int down = s2[i] - '0';
        for (; j >= 0; j--) {
            int m = s[j] - '0';
            int temp = m*down + shang;
            if (j - 1 == -1) {
                char s3[25];
                ss.insert(0, itoa(temp, s3, 10));
            }
            else
                ss.insert(ss.begin(), temp % 10 + '0');
            shang = temp / 10;
        }
        if (res.size() > 0) {
            int m = res.size();
            while (m--) {
                ss += '0';
            }
        }
        //cout<<ss<<endl;           
        res.push_back(ss);
    }
    int end = res[res.size()-1].size() - 1;
    for (int m = 0; m < res.size(); m++) {
        int zero = end - res[m].size() + 1;
        while (zero--) {
            res[m].insert(res[m].begin(), '0');
        }
        //cout<<res[m]<<endl;
    }
    int shang = 0, sum = 0;
    end = res[0].size();
    while (end--) {
        sum = 0;
        for (int m = 0; m < res.size(); m++) {
            sum += (res[m][end] - '0');
        }
        sum += shang;
        //cout << sum << endl;
        if (end - 1 == -1) {
            char s3[25];
            res2.insert(0, itoa(sum, s3, 10));
        }
        else {
            res2.insert(res2.begin(), sum % 10 + '0');
        }
        shang = sum / 10;
    }
    return res2;
}

int main() {
    string s, res2;
    vector<string> res;
    double s4;
    int n;
    while (cin >> s >> n) {
        int count = 0;//小数点位数 
        //double resl=pow(s4, n);
        for (string::iterator iter = s.begin(); iter != s.end(); iter++, count++) {
            if (*iter == '.') {
                //cout<<"dsdsd"<<endl;
                count = (s.size() - count - 1)*n;
                //cout<<count;
                s.erase(iter);
                break;
            }
        }
        string s1 = s;
        if(n>1)
            s1 = getTimes(s, s);
        for (int i = 2; i < n; i++) {
            s1 = getTimes(s1, s);
        }
        int point_pos = s1.size() - count;
        s1.insert(point_pos, ".");
        if (s1[0] == '0')
            s1.erase(s1.begin());
        while (s1[s1.size()-1] == '0') {
            s1.erase(s1.end()-1);
        }
        if (s1[s1.size() - 1] == '.') {
            s1.erase(s1.end() - 1);
        }
        cout << s1 << endl;
    }
    return 0;
}
POJ1001 (求高精度幂,Exponentiation,C++) 北京大学程序在线评测系统 (“PekingUniversityOnlineJudge”) POJ1001 (求高精度幂,Exponentiation,C++) 题目的网址 题目大意是对一个实数R( 0.0 < R < 99.999 ),精确计算 R 的 n 次方,其中n 是整数并且 0 < n <= 25。 具体思路在代码中的注释中都有体现,不做过多解释。 话不多说,具体代... 阅读详情

相关推荐

poj1001的测试用例

Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。

POJ 1001 求高精度幂【JAVA】

求高精度幂 Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 117394   Accepted: 28569 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一

free斩 1522

Megatron单机多卡Qwen2.5:pre-train+sft

英伟达:https://github.com/NVIDIA/Megatron-LM/releases/tag/core_r0.8.0阿里:https://github.com/alibaba/Pai-Megatron-Patch/releases/tag/v0.10.2。

weixin_46873015的博客 2178

POJ 1001 求高精度幂

题目描述:对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 解题思路:很简单的一道高精度题目。话不多说直接上代码,过程被写得复杂啦,有很大的改进空间。 #include #include using namespace std; string m

CS练功房 2630

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1518

从零构建FOC:手把手教你实现无刷电机磁场定向控制

本文是一份详尽的FOC(磁场定向控制)实战教程,指导开发者从零开始构建无刷电机驱动系统。文章深入解析了FOC的核心算法,包括坐标变换(Clarke/Park)、SVPWM调制和双环PI控制,并对比了有感与无感方案的实现差异。通过分步调试指南,帮助读者亲手实现稳定、高效的无刷电机控制,彻底掌握其底层原理。

h3i4j的博客 514

求高精度幂【POJ 1001】【编程】

Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。 Output 对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方

roman1232008的专栏 1047

Autosar Os降低CPU负载的方案总结

由于各个项目的实际场景不尽相同,可能需要有针对性的对症优化。如果你还有别的一些优化手段欢迎留言交流。

3676

NYOJ155-求高精度幂

求高精度幂 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 ,要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 。 输入 输入有多行,每行有两个数R和n,空格分开。R的数字

YCH1035235541的专栏 1675

BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network(2018,妆容迁移)

论文下载地址:BeautyGAN | Proceedings of the 26th ACM international conference on Multimedia 目的:在实例级实现化妆图像和非化妆图像的妆容迁移 方法:全局域集损失和本地实例级损失合并到一个双输入/输出对抗生成网络。步骤:使用一对鉴别器将非化妆面传输到化妆域,鉴别器从域的真实样本中分辨出生成的图像。在域集迁移的基础上,采用基于不同人脸区域的像素级直方图损失来实现实例级迁移。为了保持人脸的一致性和消除伪影,在总体目标函数中加入了.

weixin_53965540的博客 663

HyperLynx实战:手把手教你搞定DDR4信号完整性仿真(附ODT与终端电阻配置避坑)

本文详细介绍了使用HyperLynx进行DDR4信号完整性仿真的实战技巧,重点解析了ODT配置与终端电阻优化的黄金法则。通过模型准备、拓扑构建、ODT扫描等关键步骤,帮助硬件工程师规避常见设计陷阱,提升高速数字电路设计的效率与可靠性。

weixin_30861797的博客 638

高精度算法简单说明(poj1001)

poj1001题就是一个计算R的n次方的问题,由于数据范围 0.0  0 long double: 12 byte = 96 bit 范围: 1.18973e+4932 ~ 3.3621e-4932)的范围,即应使用高精度算法。 这里需要注意的是:Leading zeros should be suppressed in the output. Insignificant traili

小哲的博客 618

LSTM 双向 Bi-LSTM

LSTM 双向 Bi-LSTM

jacke121的专栏 1516

求高精度幂 POJ1001

求高精度幂 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。 Output 对于

algorithm_fish的专栏 494

ADES1831和ADBMS6830

1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。

m0_61973119的博客 263

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

poj 1001 求高精度幂

这一题应该算是非常基础的高精度模板题了,但是由于我之前没有做过类似的题目,所以这题还是花了不少时间。 关键是输入的顺序跟实际计算的顺序是相反的,这就容易出错,还有就是输入可能会有带无意义的“0”的情况,所以还得把这些零处理掉,比如输入“3.000”,此处的“0”跟小数点都是没有意义的,最后的结果不能够输出来,我看网上的题解都是最后在处理这些零的,但我是在输入的时候就把这些零处理掉了,因为我发现,

Kerwun的博客 570

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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 for many...

RPG_Zero的博客 256

温度PID控制PLC程序

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

1001:求高精度幂

Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。 Output 对于每组输入,要求输出一行,该行包含精

zhang_han666的博客 227

POJ1001求高精度幂

点击打开链接import java.math.*; import java.util.*; public class 求高精度幂 { public static void main(String[] args) { Scanner in=new Scanner(System.in); BigDecimal a; int b; while(in...

L-qf 的博客 302

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的博客 214

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

POJ 1001 Java:求高精度幂

题目本身不难,主要考察到对大数的处理。 Java.math包中,有BigInteger和BigDecimal两个类,分别可以表示长度不可变的,任意精度的整数和小数,并且可以和字符串相互转换,使得Java在处理大数方面具有独特的优势。 AC代码: import java.util.*; import java.math.*; public class POJ1001 { public

卡卡罗特 1407

[POJ] 1001 -> 求高精度幂

求高精度幂 Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 143826   Accepted: 35104 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实

一个程序猿的BLOG 854

ACM-北大1001求高精度幂

求高精度幂 Time Limit:500MS   Memory:10000K Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的

Vivinia的博客 455

C# 高精度求幂 poj1001

高精度求幂 public static char[] exponentiation(string a,int r) { char[] aa = new char[1]; string b = ""; string c = a; for (int i = 0; i...

diduo6513的博客 160
上一篇: 第九章(1至3节)形态学图像处理
下一篇: 第十章 图像分割(1至3节)
second24
博客等级 码龄10年 47粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值