bzoj1002 轮状病毒 递推 高精度

Description

  轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子
和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示

  N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不
同的3轮状病毒,如下图所示

  现给定n(N<=100),编程计算有多少个不同的n轮状病毒

Input

  第一行有1个正整数n

Output

  计算出的不同的n轮状病毒数输出

Sample Input

3

Sample Output

16


做完之后到网上看了看题解。。
基尔霍夫矩阵。是什么??
没学过。。
反正  我就纯暴力手算出了前几个。。。(其实到第四个就数不下去了)
然后发(kan)现(ti)了(jie)规律。嗯哼。
贴下代码。

var
  i,j,k,t,n:longint;
  f:array[1..500]of string;
  s:string;
function jia(s:string;x:longint):string;
  var
    i,j,k,t:longint;
  begin
    t:=x;
    for i:=length(s) downto 1 do
    begin
      k:=ord(s[i])-48;
      inc(k,t);
      t:=0;
      if k>=10 then begin dec(k,10);t:=1;end;
      s[i]:=chr(k+48);
    end;
    if t=1 then s:='1'+s;
    jia:=s;
  end;
function jian(s1,s2:string):string;
  var
    i,j,k,t,x,y:longint;
  begin
    while length(s2)<length(s1) do
      s2:='0'+s2;
    t:=0;
    for i:=length(s1) downto 1 do
    begin
      x:=ord(s1[i])-48;
      y:=ord(s2[i])-48;
      if t=0 then begin
               if x>=y then dec(x,y)
                       else begin inc(x,10);dec(x,y);t:=1;end;end
             else
               if x-1>=y then begin x:=x-1-y;t:=0;end
                            else begin inc(x,9);dec(x,y);t:=1;end;


      s[i]:=chr(x+48);
    end;
    jian:=s;
  end;
function cheng(s:string;x:longint):string;
  var
    i,j,k,t:longint;
  begin
    t:=0;
    for i:=length(s) downto 1 do
    begin
      k:=ord(s[i])-48;
      k:=k*x+t;
      t:=0;
      if k>=10 then begin t:=k div 10;k:=k mod 10;end;
      s[i]:=chr(k+48);
    end;
    if t<>0 then s:=chr(t+48)+s;
    cheng:=s;
  end;
begin
  readln(n);
  f[1]:='1';
  f[2]:='5';
  for i:=3 to n do
  begin
    s:=cheng(f[i-1],3);
    s:=jian(s,f[i-2]);
    s:=jia(s,2);
    f[i]:=s;
  end;
  writeln(f[n]);
end.


蒟蒻代码大神勿吐槽
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值