题目
思路
这些题目基本都可以用deque处理,先进行判断power是1或0的情况
然后p是其他数据就进行循环
先把deque push进去一个base数,之后从后往前的×base
之后进位,进到最前位push_front即可
代码
#include<iostream>
#include<deque>
using namespace std;
void POW(int b, int p)
{
deque<int>D;
D.push_back(b);
if(p == 0)
{
cout << "1";
return;
}
if(p == 1)
{
cout << b ;
return;
}//
for(int i = 1; i < p; i++)
{
for(deque<int>::reverse_iterator it = D.rbegin(); it != D.rend(); it++)
{
*it *= b;
}
for(deque<int>::reverse_iterator it = D.rbegin(); it != D.rend(); it++)
{
int carry = 0;
if(*it >= 10)
{
carry = *it / 10;
*it %= 10;
}
if(carry)
{
if(it + 1 != D.rend())
{
*(it + 1) += carry;
}
else
{
D.push_front(carry);
break;
}
}
}
}
for(deque<int>::iterator it = D.begin(); it != D.end(); it++)
{
cout << *it;
}
}
int main()
{
int t;
cin >> t;
for(int i = 0; i < t; i++)
{
int base,power;
cin >> base >> power;
cout << "case #" << i << ":"<<endl;
POW(base,power);
cout << endl;
}
return 0;
}