记录编号 |
34198 |
评测结果 |
AAAAAAAAAA |
题目名称 |
方程 |
最终得分 |
100 |
用户昵称 |
QhelDIV |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.831 s |
提交时间 |
2011-12-03 16:53:04 |
内存使用 |
1.82 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
long long Loo=1;
long long C[2][1001][101],L[1001];
long long x,K,g;
int main()
{
freopen("equationz.in","r",stdin);
freopen("equationz.out","w",stdout);
long long i,j,k;
for(i=1;i<=18;i++)
Loo*=10;
cin>>K>>x;C[0][0][1]=1;C[1][0][1]=1;
x%=1000;
int g=x;
for(i=1;i<x;i++)
{
g*=x;
g%=1000;
}
L[1]=1;
for(i=1;i<g;i++)
{
int pos=i % 2;
for(j=1;j<=i;j++)
{
C[pos][j][1]=0;
int sed=(L[j]>L[j-1]?L[j]:L[j-1]);
for(k=1;k<=sed;k++)
{
C[pos][j][k]+=C[!pos][j-1][k]+C[!pos][j][k];
C[pos][j][k+1]=C[pos][j][k]/Loo;
C[pos][j][k]%=Loo;
}
if(C[pos][j][sed+1]!=0)
sed++;
L[j]=sed;
}
}
if(g==0)
cout<<0;
else
{
cout<<C[(g-1)%2][K-1][L[K-1]];
for (i=L[K-1]-1;i>=1;i--)
printf("%018lld",C[(g-1)%2][K-1][i]);
}
fclose(stdin);
fclose(stdout);
return 0;
}