您的位置:首页 > 其它

bzoj 1002: [FJOI2007]轮状病毒

2016-02-27 21:58 543 查看
基尔霍夫矩阵(我也不知道是什么)推出f[i]=(f[i-1]*3-f[i-2]+2)(这其实是我抄的)

还是要高精的。

#include<cstdio>
#include<iostream>
using namespace std;
int f[102][102],n;
void mul(int a1)
{
f[a1][0]=f[a1-1][0];
for(int i=1;i<=f[a1-1][0];i++)
{
f[a1][i]+=f[a1-1][i]*3;
f[a1][i+1]+=f[a1][i]/10;
f[a1][i]%=10;
}
if(f[a1][f[a1][0]+1])
f[a1][0]++;
return;
}
void jia(int a1)
{
f[a1][1]+=2;
for(int i=1;i<=f[a1][0];i++)
{
f[a1][i]-=f[a1-2][i];
if(f[a1][i]<0)
{
f[a1][i+1]--;
f[a1][i]+=10;
}
}
for(;f[a1][f[a1][0]]==0;)
f[a1][0]--;
return;
}
int main()
{
scanf("%d",&n);
f[1][0]=1;
f[1][1]=1;
f[2][0]=1;
f[2][1]=5;
for(int i=3;i<=n;i++)
{
mul(i);
jia(i);
}
for(int i=f
[0];i;i--)
printf("%d",f
[i]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: