輪狀病毒 HYSBZ
阿新 • • 發佈:2018-12-13
輪狀病毒有很多變種,所有輪狀病毒的變種都是從一個輪狀基產生的。一個N輪狀基由圓環上N個不同的基原子
和圓心處一個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示
N輪狀病毒的產生規律是在一個N輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不
同的3輪狀病毒,如下圖所示
現給定n(N<=100),程式設計計算有多少個不同的n輪狀病毒
Input
第一行有1個正整數n
Output
計算出的不同的n輪狀病毒數輸出
Sample Input 3 Sample Output 16
遞推式:
f [ n ]= 3* f[ n-1 ]- f[ n-2 ]+2;
具體推導:
矩陣樹定理
java 高精;
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int n;n=cin.nextInt();
BigInteger[] array;
array=new BigInteger[200];
array[1]=BigInteger.valueOf(1 );array[2]=BigInteger.valueOf(5);
if(n==1)System.out.println(1);
else if(n==2)System.out.println(5);
else {
for(int i=3;i<=n;i++) {
array[i]=array[i-1].multiply(BigInteger.valueOf(3)).subtract(array[i-2]).add(BigInteger.valueOf(2));
}
System.out.println (array[n]);
}
// cin.close();
}
}