这道题目是实质上就是高精度的乘法,虽然是带小数点的数多少次幂,但是开始我们需要将它变为整数进行求幂,然后再加上小数点,然后要考虑前导0,有效数位问题,做的时候要十分的小心

#include<iostream>
#include<string>
#include<cmath>
using namespace std; int origin[]; //输入不会超过6位
int num[]; //计算的结果
int backnum[]; int main()
{
string decim;
int ep,i,j,k,numpos,value,resid,count;
long fpos,efpos; //小数位和有效数位
int pointflag;
while(cin>>decim>>ep)
{
memset(origin,,sizeof(origin));
memset(num,,sizeof(num));
memset(backnum,,sizeof(backnum));
fpos=;numpos=,count=;
//将输入的数从后往前存到int数组中
for(i=decim.size()-;i>=;i--)
{
//记录第一个不是0的位置
if(!count&&decim[i]!='')
{
efpos=i;count=;
}
//记录小数点出现的位置
if(decim[i]=='.') fpos=decim.size()--i;
else{
//如果是数字,就存下来
origin[numpos]=decim[i]-'';
numpos++;
}
}
efpos=fpos-(decim.size()--efpos);
num[]=;
//进行ep次大整数乘法
for(int x=;x<ep;x++)
{
for(i=;i<;i++)
{
resid=;
for(j=;j<;j++)
{
value=num[j]*origin[i]+resid;
backnum[j+i]+=(value%);
if(backnum[j+i]>=)
{
backnum[j+i]=backnum[j+i]%;
backnum[j+i+]++;
}
resid=value/; }
//if(value==0&&resid==0) break;
}
memcpy(num,backnum,sizeof(num));
memset(backnum,,sizeof(backnum));
}
pointflag=;
fpos=fpos*ep;
efpos=efpos*ep;
//忽略前导0
for(i=;i>=;i--) if(num[i]) break;
//判断忽略前导0后,导致实际位数不够的时候填充0的情况
//即 0.4321 20
if(i+<fpos)
{
cout<<".";
for(int z=;z<fpos-i-;z++)
{
cout<<"";
}
efpos=efpos-(fpos-i-);
pointflag=;
}
for(j=i;j>=;j--)
{ if(j+==fpos)
{
if(efpos<=) break;
cout<<".";
pointflag=;
}
if(pointflag) pointflag++;
cout<<num[j];
//如果小数后的位数超过了有效位数,停止:即忽略后0
if(pointflag>(efpos)) break;
}
cout<<endl;
}
return ;
}

poj1001求幂的更多相关文章

  1. C# 高精度求幂 poj1001

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

  2. 算法:求幂(python版)

    分别用迭代方法和递归方法实现求幂迭代方法的时间复杂度为O(n),空间复杂度为O(1)递归方法1的时间复杂度为O(logn),空间复杂度为O(logn)递归方法2的时间复杂度为O(n),空间复杂度为O( ...

  3. 九度OJ 1085 求root(N, k) -- 二分求幂及快速幂取模

    题目地址:http://ac.jobdu.com/problem.php?pid=1085 题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k). ...

  4. 快速求幂(Quick Exponentiation)

    接触ACM没几天,向各路大神求教,听说ACM主要是研究算法,所以便开始了苦逼的算法学习之路.话不多说,RT所示,学习快速求幂. 在头文件<math.h>或是<cmath>中,d ...

  5. 高效求幂取余 算法,复杂度 log(n)

    做TopCoder SRM 576 D2 L3 题目时,程序有个地方需要对一个数大量求幂并取余,导致程序运行时间很长,看了Editoral之后,发现一个超级高效的求幂并取余的算法,之前做System ...

  6. NYOJ--102--次方求模(快速求幂取模)

    次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 求a的b次方对c取余的值   输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...

  7. [leetcode]50. Pow(x, n)求幂

    Implement pow(x, n), which calculates x raised to the power n (xn). Example 1: Input: 2.00000, 10 Ou ...

  8. 求幂运算、多项式乘法及Horner法则的应用

    一,两种不同的求幂运算 求解x^n(x 的 n 次方) ①使用递归,代码如下: private static long pow(int x, int n){ if(n == 0) return 1; ...

  9. 二分求幂/快速幂取模运算——root(N,k)

    二分求幂 int getMi(int a,int b) { ; ) { //当二进制位k位为1时,需要累乘a的2^k次方,然后用ans保存 == ) { ans *= a; } a *= a; b / ...

随机推荐

  1. Func和Action的用法区别

    平时我们如果要用到委托一般都是先声明一个委托类型,比如: private delegate string Say(); string说明适用于这个委托的方法的返回类型是string类型,委托名Say后 ...

  2. [ Swift框架 ] # SwiftyJSON

    Swift写的关于转化JSON数据 https://github.com/SwiftyJSON/SwiftyJSON

  3. c语言复杂声明解析

    这是个好东西,接触c语言好几年了,第一次看到这东西,惊喜万分. 先提供个分析案例,以后看方便 vector <int> * (*seq_array[]) (int )={func1,fun ...

  4. 国内首篇介绍JanOS物联网操作系统的文章 - 如何把你的手机主板打造成物联网平台

    天地会珠海分舵注:如无意外,您现在正在看的将是国内首篇且是唯一一篇介绍炙手可热的物联网的操作系统JanOS的文章!不信你去百度!希望大家能喜欢.但本文只是引言,更多信息请还是访问JanOS的官网:ht ...

  5. Floodlight controller 线程池模型

         官方文档对于ThreadPool的描写叙述是:ThreadPool is a Floodlight module wrapper for a Java's ScheduledExecutor ...

  6. sudo找不到npm的解决办法及及使用cnpm加速[已解决]

    sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s ...

  7. SQL点滴22—性能优化没有那么神秘

    原文:SQL点滴22-性能优化没有那么神秘 经常听说SQL Server最难的部分是性能优化,不禁让人感到优化这个工作很神秘,这种事情只有高手才能做.很早的时候我在网上看到一位高手写的博客,介绍了SQ ...

  8. style、currentStyle、getComputeStylel的使用

    (1)js中使用obj.style的用法,是为了获得内联样式,即style属性中的值. 如果想获取obj.style.display,但内联样式表中没有定义display,那么将返回一个空的字符串. ...

  9. shell awk统计重复个数

    awk是一个很强大的工具,一个常见的用法就是统计一个文件中重复的列值的个数,这也是面试时面试官经常问的一个问题. 举个例子: 有个文件file.log的内容如下: http://www.sohu.co ...

  10. 基于Asterisk的VoIP开发指南——(2)Asterisk AGI程序编写指南

    原文:基于Asterisk的VoIP开发指南--(2)Asterisk AGI程序编写指南 5. Asterisk AGI程序编写指南 5.1概述 很多时候,我们需要在拨号方案中做某些业务逻辑的判断或 ...