BZOJ1002轮状病毒
来源:互联网 发布:网校软件 编辑:程序博客网 时间:2024/05/01 08:13
1002: [FJOI2007]轮状病毒
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 3852 Solved: 2106
Description
给定n(N<=100),编程计算有多少个不同的n轮状病毒。
Input
第一行有1个正整数n。
Output
将编程计算出的不同的n轮状病毒数输出
Sample Input
3
Sample Output
16
根据基尔霍夫矩阵,得出递推公式f[i]=f[i-1]*3+f[i-2]+2
高精乘,高精减
附上本蒟蒻的代码:
//f[i]=(f[i-1]*3-f[i-2]+2)#include<cstdio>#include<iostream>using namespace std;struct kx{ int a[101],len;};int n;kx mul(kx a,int k){ for (int i=1;i<=a.len;i++) a.a[i]*=k; for (int i=1;i<=a.len;i++) { a.a[i+1]+=a.a[i]/10; a.a[i]%=10; } if (a.a[a.len+1]!=0) a.len++; return a;}kx sub(kx a,kx b){ a.a[1]+=2; int j=1; while (a.a[j]>=10) a.a[j]%=10,a.a[j+1]++,j++; for (int i=1;i<=a.len;i++) { a.a[i]-=b.a[i]; if (a.a[i]<0) a.a[i]+=10,a.a[i+1]--; } while (a.a[a.len]==0) a.len--; return a;}int read(){ int w=0,c=1; char ch=getchar(); while (ch<'0' || ch>'9') { if (ch=='-') c=-1; ch=getchar(); } while (ch>='0' && ch<='9') w=w*10+ch-'0',ch=getchar(); return w*c;}int main(){ kx f[101]; f[1].a[1]=1,f[2].a[1]=5,f[1].len=f[2].len=1; n=read(); for (int i=3;i<=n;i++) f[i]=sub(mul(f[i-1],3),f[i-2]); for (int i=f[n].len;i>0;i--) printf("%d",f[n].a[i]); return 0;}
0 0
- BZOJ1002轮状病毒
- [BZOJ1002]轮状病毒
- BZOJ1002轮状病毒
- [Bzoj1002][FJOI2007]轮状病毒
- bzoj1002[FJOI2007]轮状病毒
- 【bzoj1002】【FJOI2007】【轮状病毒】
- [高精度][BZOJ1002][FJOI2007]轮状病毒
- 【FJOI2007】【BZOJ1002】轮状病毒
- bzoj1002【fjoi2007】轮状病毒
- [BZOJ1002] [FJOI2007] 轮状病毒
- BZOJ1002 [FJOI2007]轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- bzoj1002: [FJOI2007]轮状病毒
- 【FJOI2007】bzoj1002 轮状病毒
- 【bzoj1002】[FJOI2007]轮状病毒
- bzoj1002 [FJOI2007]轮状病毒
- bzoj1002: [FJOI2007]轮状病毒
- [bzoj1002] [FJOI2007]轮状病毒
- java基础2
- enOtigiDforebmuN.233
- NumberPicker的使用、关闭可编辑模式
- 203. Remove Linked List Elements
- CentOS 6.5 安装NS-2
- BZOJ1002轮状病毒
- 在Android中使用Handler和Thread线程执行后台操作
- ZSOI2012 最大立方体空间 二分答案
- Unity着色器学习
- IOS绘图的基本步骤
- 深度解析Java8 – AbstractQueuedSynchronizer的实现分析(上)
- java的存储分配
- linux eth0 网络笔记
- HZCommanFunc 使用一句话调用工具类,对文本,文件加密