zoukankan      html  css  js  c++  java
  • BZOJ [FJOI2007]轮状病毒 (找规律)

    1002: [FJOI2007]轮状病毒

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 6009  Solved: 3282
    [Submit][Status][Discuss]

    Description

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

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

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

    Input

      第一行有1个正整数n

    Output

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

    Sample Input

    3

    Sample Output

    16

    HINT

     

    Source

    析:找规律,首先可以暴力找出前几项,是 1 5 16 45 121 320,规律很容易能看出来是 f[n] = 4 * f[n-1] - 4 * f[n-2] + f[n-3]

    由于数据比较大,高精度,可以用python来解决。

    n = input()
    f1 = int(1)
    f2 = int(5)
    f3 = int(16)
    if n == 1:	print 1
    elif n == 2:	print 5
    elif n == 3: 	print 16
    else:
    	f = int(0)
    	for i in range(3, n, 1):
    		f = 4 * f3 - 4 * f2 + f1
    		f1 = f2
    		f2 = f3
    		f3 = f
    	print f
    

      

  • 相关阅读:
    C语言调用VIX_API开关虚拟机
    (转)Vix_API 操作 VMware
    C# U盘扫描
    设置字符集
    LIS系统通讯程序原理与实现
    Linux命令的简写和全称
    远程桌面如何退出全屏或全屏切换
    C#编程总结(七)数据加密
    c# 小叙 Encoding(三)
    c# 小叙 Encoding(二)
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/8075899.html
Copyright © 2011-2022 走看看