记录编号 391203 评测结果 AAAAAAAAAAAAAA
题目名称 [暑假培训2012] 残酷的数学老师 最终得分 100
用户昵称 Gravatarchs 是否通过 通过
代码语言 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;
}