记录编号 |
77831 |
评测结果 |
AAAAAAAAAA |
题目名称 |
方程 |
最终得分 |
100 |
用户昵称 |
Launcher |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.082 s |
提交时间 |
2013-11-02 19:20:36 |
内存使用 |
2.22 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int k,x,n,m;
//short f[1002][1002][500]={0};
short f1[1002][500]={0},f2[1002][500]={0};
int Max(int x,int y)
{
if (x>y)
return x;
else
return y;
}
void add1(int y)
{
int i,j,l,c,t;
l=Max(f2[y-1][0],f2[y][0]);
t=0;
for (i=1;i<=l;i++)
{
c=f2[y-1][i]+f2[y][i]+t;
f1[y][i]=c%10;
t=c/10;
}
f1[y][0]=l;
if (t!=0)
{
f1[y][0]=l+1;
f1[y][l+1]=t;
}
}
void add2(int y)
{
int i,j,l,c,t;
l=Max(f1[y-1][0],f1[y][0]);
t=0;
for (i=1;i<=l;i++)
{
c=f1[y-1][i]+f1[y][i]+t;
f2[y][i]=c%10;
t=c/10;
}
f2[y][0]=l;
if (t!=0)
{
f2[y][0]=l+1;
f2[y][l+1]=t;
}
}
int main()
{
freopen("equationz.in","r",stdin);
freopen("equationz.out","w",stdout);
cin>>k>>m;
int i,j;
m%=1000;
n=m;
for (i=1;i<m;i++)
n=(n*m)%1000;
if (n<k)
{
cout<<0<<endl;
return 0;
}
if (n==k)
{
cout<<1<<endl;
return 0;
}
f2[1][1]=1;
f2[1][0]=1;
for (i=2;i<=n;i++)
{
if (i%2==0)
for (j=1;j<=i;j++)
add1(j);
if (i%2!=0)
for (j=1;j<=i;j++)
add2(j);
}
int p,q;
p=n;
q=k;
if (n%2==0)
for (i=f1[q][0];i>=1;i--)
{
cout<<f1[q][i];
}
if (n%2!=0)
for (i=f2[q][0];i>=1;i--)
{
cout<<f2[q][i];
}
return 0;
}