记录编号 32501 评测结果 AAAAAAAAAA
题目名称 方程 最终得分 100
用户昵称 Gravatarmagic 是否通过 通过
代码语言 C++ 运行时间 1.910 s
提交时间 2011-11-07 08:03:24 内存使用 9.29 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
	int k,x;
	int gx;
	string zh[1505][1505];
	string basic;
	int data[100005];
long long qm(int a,int b,int c);
string splus(string a,string b);
string combine(int n,int m);
long long qm(int a,int b,int c)
{
	long long ans;
	a=a%c;
	ans=1;
	while (b>0)
	{
		if (b%2==1) 
		{
			ans=ans*a%c;
		}
		b/=2;
		a=a*a%c;
	}
	return ans;
}
string combine(int n,int m)
{
	for (int i=1;i<=max(m,n);i++)
	{
		zh[i][i]='1';
		zh[i][0]='1';
	}
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=m;j++)
		{
			if (i!=j&&i>=j)
			{
			zh[i][j]=splus(zh[i-1][j],zh[i-1][j-1]);
			}
		}
	}
	return zh[n][m];
}
string splus(string a,string b)
{
	int p,q,l;
	string ans;
	for (int i=0;i<=1000;i++)
	{
		data[i]=0;
	}
	p=a.length();
	q=1;
	for (int i=p-1;i>=0;i--)
	{
		data[q]=a[i]-'0';
		q++;
	}
	p=b.length();
	q=1;
	for (int i=p-1;i>=0;i--)
	{
		data[q]+=b[i]-'0';
		q++;
	}
	l=max(a.length(),b.length());
	for (int i=1;i<=l;i++)
	{
		data[i+1]+=data[i]/10;
		data[i]%=10;
	}
	if (data[l+1]>0)
	{
		l++;
	}
	for (int i=l;i>=1;i--)
	{
		ans+=data[i]+'0';
	}
	return ans;
}
int main()
{
	freopen("equationz.in","r",stdin);
	freopen("equationz.out","w",stdout);
	scanf("%d%d",&k,&x);
	gx=qm(x,x,1000);
	string w;
	w=combine(gx-1,k-1);
	cout<<w;
	return 0;
}