计算m的n次方
本帖最后由 andalousie 于 2014-2-5 12:47 编辑用于计算100000位以内的m的n次方
#include<iostream>
#include<string>
std::string CalculateBigpower(int m, int n)
{
int resulting = {0};
int front=1;
int back=1;
resulting=1;
int carry=0;
for(int i=1;i<=n;i++)
{
int j;
for(j=front; j<=back; ++j)
{
int temp = resulting;
resulting =(resulting * m + carry) % 10;
carry = (temp * m + carry) / 10;
}
if(carry)
{
resulting = carry;
carry = 0;
back++;
}
}
std::string Numstring;
for(int i = back; i>0; i--)
Numstring.append(1, resulting + 48);
return Numstring;
}
int main()
{
int m, n;
while(1)
{
std::cin>>m>>n;
std::string str = CalculateBigpower(m, n);
std::cout << str << std::endl;
}
return 0;
}
可以用快速幂来算。 既然都是100000以内的那可以用 long int 直接调用pow()不就好了啊 牡丹花下死做鬼 发表于 2014-2-5 10:31 static/image/common/back.gif
既然都是100000以内的那可以用 long int 直接调用pow()不就好了啊
是100000位以内,不是100000以内,拜托。据我所知内有一个整型可以这么长,能够算出2的9999次方。 andalousie 发表于 2014-2-5 11:54 static/image/common/back.gif
是100000位以内,不是100000以内,拜托。据我所知内有一个整型可以这么长,能够算出2的9999次方。
好吧 我看错了表生气啊{:5_111:} 牡丹花下死做鬼 发表于 2014-2-5 11:58 static/image/common/back.gif
好吧 我看错了表生气啊
不生气。你一说我又检查了一下。结果发现3的n次方出现了问题,现在改正了{:5_105:}
页:
[1]