比赛 |
20111108 |
评测结果 |
AAAAATTTTT |
题目名称 |
分裂 |
最终得分 |
50 |
用户昵称 |
magic |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-11-08 11:06:02 |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<cstdio>
#include<string>
using namespace std;
string g[10005];
string ans;
int n;
string first[10005];
int data[100005];
string splus(string a,string b);
string splus(string a,string b)
{
int p,q,l;
string t;
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--)
{
t+=data[i]+'0';
}
return t;
}
int main()
{
ifstream fi("mushroom.in");
ofstream fo("mushroom.out");
fi>>n;
ans='0';
for (int i=0;i<=n;i++)
{
g[i]='0';
}
g[2]='1';
first[2]='1';
if (n==1)
{
fo<<'1';
return 0;
}
for (int i=2;i<=n;i++)
{
for (int j=1;j<=i+1;j++)
{
g[j]=splus(first[j-1],first[j+1]);
if (i==n)
{
ans=splus(g[j],ans);
}
}
for (int j=1;j<=i+1;j++)
{
first[j]=g[j];
}
}
fo<<ans;
fi.close();
fo.close();
return 0;
}