1002: [FJOI2007]轮状病毒
1002: [FJOI2007]轮状病毒
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 2609 Solved: 1450
[Submit][Status]
Description
给定n(N<=100),编程计算有多少个不同的n轮状病毒。

Input
第一行有1个正整数n。
Output
将编程计算出的不同的n轮状病毒数输出
Sample Input
Sample Output
HINT
Source
var
i,j,k,l,m,n:longint;
a,b,c:array[..] of longint;
begin
readln(n);
if odd(n) then
begin
n:=(n+) div ;
if n<= then
begin
if n= then writeln() else writeln();
end
else
begin
a[]:=;
a[]:=;
b[]:=;
b[]:=;
for i:= to n do
begin
if odd(i) then
begin
k:=;
c[]:=b[]+;
for j:= to c[] do
begin
k:=k+b[j]*;
c[j]:=k mod ;
k:=k div ;
end;
for j:= to c[] do
begin
c[j]:=c[j]-a[j];
if c[j]< then
begin
dec(c[j+]);
c[j]:=c[j]+;
end;
end;
while c[c[]]= do dec(c[]);
a[]:=c[];
for j:= to a[] do
a[j]:=c[j];
end
else
begin
k:=;
c[]:=a[]+;
for j:= to c[] do
begin
k:=k+a[j]*;
c[j]:=k mod ;
k:=k div ;
end;
for j:= to c[] do
begin
c[j]:=c[j]-b[j];
if c[j]< then
begin
dec(c[j+]);
c[j]:=c[j]+;
end;
end;
while c[c[]]= do dec(c[]);
b[]:=c[];
for j:= to b[] do
b[j]:=c[j];
end;
end;
if odd(n) then
begin
c[]:=a[];
for i:=a[] downto do
c[i]:=a[i];
end
else
begin
c[]:=c[];
for i:=b[] downto do
c[i]:=b[i];
end;
fillchar(a,sizeof(a),);
a[]:=c[]*;
for i:= to c[] do
begin
for j:= to c[] do
begin
a[i+j-]:=a[i+j-]+c[i]*c[j];
a[i+j]:=a[i+j]+(a[i+j-] div );
a[i+j-]:=a[i+j-] mod ;
end;
end;
while a[a[]]= do dec(a[]);
for i:=a[] downto do
write(a[i]);
writeln;
end;
end
else
begin
n:=n div ;
if n<= then
begin
if n= then writeln() else writeln();
end
else
begin
a[]:=;
a[]:=;
b[]:=;
b[]:=;
for i:= to n do
begin
if odd(i) then
begin
k:=;
c[]:=b[]+; for j:= to c[] do
begin
k:=k+b[j]*;
c[j]:=k mod ;
k:=k div ;
end;
for j:= to c[] do
begin
c[j]:=c[j]-a[j];
if c[j]< then
begin
dec(c[j+]);
c[j]:=c[j]+;
end;
end;
while c[c[]]= do dec(c[]);
a[]:=c[];
for j:= to a[] do
a[j]:=c[j];
end
else
begin
k:=;
c[]:=a[]+; for j:= to c[] do
begin
k:=k+a[j]*;
c[j]:=k mod ;
k:=k div ;
end;
for j:= to c[] do
begin
c[j]:=c[j]-b[j];
if c[j]< then
begin
dec(c[j+]);
c[j]:=c[j]+;
end;
end;
while c[c[]]= do dec(c[]);
b[]:=c[];
for j:= to b[] do
b[j]:=c[j];
end;
end;
if odd(n) then
begin
c[]:=a[];
for i:= to c[] do
c[i]:=a[i];
end
else
begin
c[]:=b[];
for i:= to c[] do
c[i]:=b[i];
end;
fillchar(a,sizeof(a),);
a[]:=*C[];
for i:= to c[] do
for j:= to c[] do
begin
a[i+j-]:=a[i+j-]+c[i]*c[j];
a[i+j]:=a[i+j]+(a[i+j-] div );
a[i+j-]:=a[i+j-] mod ;
end;
while a[a[]]= do dec(a[]);
k:=;
for i:= to a[] do
begin
k:=k+a[i]*;
a[i]:=k mod ;
k:=k div ;
end;
while k> do
begin
inc(a[]);
a[a[]]:=k mod ;
k:=k div ;
end;
for i:=a[] downto do
write(a[i]);
writeln;
end;
end;
end.
1002: [FJOI2007]轮状病毒的更多相关文章
- 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同 ...
- bzoj 1002 [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2234 Solved: 1227[Submit][Statu ...
- 生成树的计数(基尔霍夫矩阵):BZOJ 1002 [FJOI2007]轮状病毒
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3928 Solved: 2154[Submit][Statu ...
- BZOJ 1002 [FJOI2007]轮状病毒
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3106 Solved: 1724[Submit][Statu ...
- BZOJ 1002: [FJOI2007]轮状病毒【生成树的计数与基尔霍夫矩阵简单讲解+高精度】
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5577 Solved: 3031[Submit][Statu ...
- 【BZOJ】1002: [FJOI2007]轮状病毒(DP+规律+高精度)
http://www.lydsy.com/JudgeOnline/problem.php?id=1002 其实我还是看题解的,而且看了题解也没明白那公式怎么来的T_T,先水过了先把....以后研究一下 ...
- bzoj 1002 [FJOI2007]轮状病毒——打表找规律
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 看 Zinn 的博客:https://www.cnblogs.com/Zinn/p/9 ...
- 【刷题】BZOJ 1002 [FJOI2007]轮状病毒
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...
- BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
题目大意:轮状病毒基定义如图.求有多少n轮状病毒 这个递推实在是不会--所以我选择了打表找规律 首先执行下面程序 #include<cstdio> #include<cstring& ...
随机推荐
- 其实想要完全理解MVC框架并不是太容易
完全理解MVC并不是很容易.使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考.同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难.每个构件在使用之前都需 ...
- LIS算法
LIS(Longest Increasing Subsequence)最长上升(不下降)子序列. 1. O(n^2) #include<cstdio> #include<algori ...
- 巧用css text-indent减小中文标点符号的占位大小
由于设计需要,我们的页面中经常会有如下效果: 可是我们实现出来的效果确实这样的: 看起来两行文本没有对齐嘛,仔细检查后原来是[字符的原因,因为是中文标点符号占半个字的位置.不信?选中下汉字标点符号看一 ...
- HDU5882
Balanced Game Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- xshell无法连接到linux主机原因分析
xshell连接linux主机时,会出现错误:Could not connect to '192.168.89.144' (port 22): Connection failed. 但是这时能pin ...
- HTML5 & CSS3 初学者指南(4) – Canvas使用
介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新 ...
- 笑谈ArcToolbox (4) 非我族类
笑谈ArcToolbox (4) 非我族类 by 李远祥 ArcToolbox的工具既能直接对数据源进行处理,也能对图层以及被选择要素进行处理.但有些数据看起来是空间数据,但实际上在处理的时候还是会出 ...
- JAVA函数的重载
一.什么是重载(overlording) 在JAVA中,可以在同一个类中存在多个函数,函数名称相同但参数列表不同.这就是函数的重载(overlording).这是类的多太性表现之一. 二.重载的特征: ...
- Surface Dial 与 Windows Wheel UWP应用开发
随着微软发布 Surface Studio 在演示视频中非常抢眼的一个配件就是 Surface Dial,Dial 是Windows输入设备大家庭中的新成员我们把它归类为Windows Wheel 类 ...
- asp.net core mvc权限控制:分配权限
前面的文章介绍了如何进行权限控制,即访问控制器或者方法的时候,要求当前用户必须具备特定的权限,但是如何在程序中进行权限的分配呢?下面就介绍下如何利用Microsoft.AspNetCore.Ident ...