📄 模拟幂运算.cpp
字号:
#include<iostream>
using namespace std;
int sizeA;
int a[1010],b[1010],c[1010];
void change(__int64 k)
{
int i;
for(i=0;k>0;i++)
{
a[i]=k%10;k/=10;
sizeA=i;
}
}
void equal(int b[],int a[],int n)
{
for(int i=0;i<=n;i++) b[i]=a[i];
}
int main()
{
int cases,n,sizeB,sizeC,h;
__int64 k;
cin>>cases;
while(cases--)
{
cin>>k>>n;
if(k==0) { cout<<0<<endl;continue; }
if(n==1) { cout<<k<<endl;continue; }
if(k<0&&(n%2==1) ) cout<<"-";
if(k<0) k=-k;
memset(a,0,sizeof(a));
change(k);
equal(b,a,sizeA);
sizeB=sizeA;
while(n-1)
{
n--;
memset(c,0,sizeof(c));
for(int i=0;i<=sizeA;i++)
{
for(int j=0;j<=sizeB;j++)
{
c[i+j]=a[i]*b[j]+c[i+j];
sizeC=i+j;
}
for(int j=0;j<=sizeC;j++)
{
c[j+1]+=c[j]/10;
c[j]=c[j]%10;
}
}
if(c[sizeC+1]!=0)sizeC++;
memset(b,0,sizeof(b));
equal(b,c,sizeC);
sizeB=sizeC;
}
for(int i=sizeB;i>=0;i--)cout<<b[i];
cout<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -