Exponentiation(1001)

#include 
#include
#include <string>
#include
using namespace std;

void main()
{
string num;
string strset1=".";
string strset2="0";
int n;
int wei;
int sum_wei;

cin>>num>>n;

int first=num.find_first_of(strset1);
if (first==string::npos)
{
wei=0;
}
else
{
wei=5-first;
num=num.substr(0,first)+num.substr(first+1);
}
first=num.find_first_not_of(strset2);
num=num.substr(first);
sum_wei=n*wei;

int i,j,k;
vector<char> vec;
for (i=0;i {
vec.push_back(num.at(i));
}

vector<char> res;
res=vec;
vector<int> temp(num.size()*(n+1),0);
vector<char> result(num.size()*(n+1),0);

for (k=0;k1;k++)
{
for (i=0;i {
temp.at(i)=0;
result.at(i)=NULL;
}

for (i=0;i {
for (j=0;j {
temp.at(i+j+1)+=(vec.at(i)-'0')*(res.at(j)-'0');
}
}
for (i=vec.size()+res.size()-1;i>=0;i--)
{
if (temp.at(i)>=10)
{
temp.at(i-1)+=temp.at(i)/10;
temp.at(i)%=10;
}
}

i=0;
while (temp.at(i)==0)
i++;
for (j=0;i {
result.at(j)=temp.at(i)+'0';
}

res=result;
for (i=res.size()-1;i>=0;i--)
{
if (res.at(i)==NULL)
{
res.pop_back();
}
}
}

vector<char>::iterator it;
int diff=0;
if (sum_wei!=0)
{
if (sum_wei {
it=res.end();
res.insert(it-sum_wei,1,'.');
}
if (sum_wei==res.size())
{
it=res.begin();
res.insert(it,1,'.');
}
if (sum_wei>res.size())
{
it=res.begin();
diff=sum_wei-res.size();
res.insert(it,diff,'0');
res.insert(res.begin(),1,'.');
}
}

for (i=res.size()-1;i>=0;i--)
{
if (res.at(i)=='0')
{
res.pop_back();
}
else
break;
}

copy(res.begin(),res.end(),ostream_iterator<char>(cout,""));
cout<
}

转载于:https://www.cnblogs.com/tiandsp/archive/2012/02/08/2343215.html

你可能感兴趣的:(Exponentiation(1001))