【bzoj1002】[FJOI2007]轮状病毒
来源:互联网 发布:保险网络增员话术 编辑:程序博客网 时间:2024/05/01 04:06
Description
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子
和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示
N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不
同的3轮状病毒,如下图所示
现给定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)
#include<cstring>#include<iostream>#include<cstdio>#include<cmath>int a[10000],b[10000],c[10000];using namespace std;int main(){ int n; scanf("%d",&n); if (n==1){cout<<"1";return 0;} if (n==2){cout<<"5";return 0;} a[1]=1;b[1]=5; int lena=1,lenb=1,lenc=0; for (int l=3;l<=n;l++) { int z=0; for (int i=1;i<=lenb||z!=0;i++) { c[i]=b[i]*3+z; z=c[i]/10; c[i]%=10; lenc=max(lenc,i); } z=0; for (int i=1;i<=lena||z!=0;i++) { c[i]=c[i]-z-a[i]; if (c[i]<0) z=1;else z=0; c[i]=(c[i]+10)%10; } while (c[lenc]==0) lenc--; c[1]+=2;z=c[1]/10;c[1]%=10; for (int i=2;z!=0;i++) { c[i]+=z; z=c[i]/10; c[i]%=10; } for (int i=1;i<=lenb;i++) { a[i]=b[i]; } for (int i=1;i<=lenc;i++) { b[i]=c[i]; } lena=lenb;lenb=lenc; } for (int i=lenb;i>=1;i--) { printf("%d",b[i]); } return 0;}
0 0
- [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]轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- BZOJ1002 [FJOI2007]轮状病毒
- BZOJ1002 [FJOI2007]轮状病毒
- 新三板挂牌条件是什么?
- JZOJ 3731. 【NOIP2014模拟7.10】庐州月
- C#定时程序
- ASP页面添加打印按钮
- python中类的基本使用
- 【bzoj1002】[FJOI2007]轮状病毒
- 如何关掉Java里面的window边框
- keras中merge用法
- keras中Convolution1D的使用
- python中使用文件的读取编码问题和简单正则使用(一)
- python中使用文件的读取编码问题和简单正则使用(二)
- Linux内核分析——扒开系统调用的三层皮(下)
- ASP.net连接mysql数据库(使用MySql.Data.dll)
- 顺序表应用2:多余元素删除之建表算法