记录编号 |
391203 |
评测结果 |
AAAAAAAAAAAAAA |
题目名称 |
[暑假培训2012] 残酷的数学老师 |
最终得分 |
100 |
用户昵称 |
chs |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.260 s |
提交时间 |
2017-04-05 15:02:56 |
内存使用 |
0.43 MiB |
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
/*=============================================*/
#define Maxn 15000
struct Bint
{
int L;
int a[Maxn+10];
};
void Binit(Bint &X,int x)
{
X.L=0;
while(x>0)
{
X.a[X.L++]=(x%10);
x/=10;
}
}
void Bprint(Bint X)
{
int c=0;
for(int i=X.L-1;i>=0;i--)
{
cout<<X.a[i];
c++;
if(c==70)
{
c=0;
cout<<endl;
}
}
cout<<endl;
}
Bint Bmul(Bint x,Bint y)
{
Bint z={0};
z.L=x.L+y.L-1;
for(int i=0;i<x.L;i++)
{
for(int j=0;j<y.L;j++)
{
z.a[i+j]+=x.a[i]*y.a[j];
}
}
for(int i=0;i<z.L-1;i++)
{
if(z.a[i]>=10)
{
z.a[i+1]+=z.a[i]/10;
z.a[i]%=10;
}
}
if(z.a[z.L-1]>=10)
{
z.a[z.L]+=z.a[z.L-1]/10;
z.a[z.L-1]%=10;
z.L++;
}
//cout<<z.L<<endl;
return z;
}
/*=============================================*/
Bint A,C;
int N,p;
void Init()
{
cin>>N>>p;
Binit(A,1);
Binit(C,N);
}
void Work()
{
while(p)
{
if(p&1) A=Bmul(A,C);
C=Bmul(C,C);
p>>=1;
}
}
void Print()
{
Bprint(A);
}
/*=============================================*/
int main()
{
freopen("cruel1.in","r",stdin);
freopen("cruel1.out","w",stdout);
Init();
Work();
Print();
return 0;
}