UVA_10334

这个题目多列几项就可以猜出来是fibonacci数列。

如果要证明的话,我们不妨来看下折射次数为n的光线是怎么构成的,实际上它们都是在折射次数为n-1的最终的射出光线与3条横线的交点位置反向画一条射出光线形成的。

因此,我们可以得知折射次数为n-1的所有光路中的最终的射出光线与横线的交点的数量就是折射次数为n的光路的总数。

按交点的性质可以分成两类,我们不妨以x表示射出光线与中间那条横线形成的交点数,以y表示射出光线与两边横线形成的交点数。我们不难发现,对于在每一个x类交点处画反向射出光线时可以形成一个y类交点,对于在每一个y类交点处画反向射出光线时可以同时形成一个x类的交点和一个y类的交点。那么对于折射次数为n时,我们不难写出x类交点和y类交点数量的递推公式,x(n)=y(n-1),y(n)=x(n-1)+y(n-1),我们把两式相加,可以得到x(n)+y(n)=x(n-1)+y(n-1)+y(n-1)=x(n-1)+y(n-1)+x(n-2)+y(n-2),令f(n)=x(n)+y(n),就可以得到f(n)=f(n-1)+f(n-2)。

前面也已经解释了射出光线与横线交点的数量和光路数之间的关系,既然射出光线与横线交点的数量是斐波那契数,那么光路数也自然是斐波那契数。

import java.math.BigInteger;import java.util.Scanner;

public class Main {public static void main(String[] args) {        Scanner cin = new Scanner(System.in);        BigInteger[] f = new BigInteger[1010];        f[0] = new BigInteger("1");        f[1] = new BigInteger("2");for(int i = 2; i <= 1000; i ++)            f[i] = f[i - 1].add(f[i - 2]);while(cin.hasNext())        {int N = cin.nextInt();            System.out.println(f[N]);        }    }}

转载于:https://www.cnblogs.com/staginner/archive/2011/12/15/2288871.html

UVA 10334 Ray Through Glasses相关推荐

  1. uva 10335 - Ray Inside a Polygon(几何)

    题目链接:uva 10335 - Ray Inside a Polygon 恶心题,注意精度和输出等问题,代码中有标识,后面有一些数据. #include <cstdio> #includ ...

  2. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  3. TYUT-A专题题解(一)

    TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...

  4. ACM程序设计基础题解

    ACM水题一 HDU1262 寻找素数对[素数] - 海岛Blog - CSDN博客 HDU4548 美素数[水题] - 海岛Blog - CSDN博客 HDU2503 a/b + c/d[水题] - ...

  5. ACM程序设计基础(2)题解

    ACM水题二 CodeForces-1A Theatre Square[水题] - 海岛Blog - CSDN博客 AOJ0009 Prime Number[筛选法+前缀和] - 海岛Blog - C ...

  6. UVa 1400 (线段树) Ray, Pass me the dishes!

    求一个区间的最大连续子序列,基本想法就是分治,这段子序列可能在区间的左半边,也可能在区间的右半边,也有可能是横跨区间中点,这样就是左子区间的最大后缀加上右子区间的最大前缀之和. 线段树维护三个信息:区 ...

  7. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  8. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  9. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

最新文章

  1. python需要基础吗-没有任何基础,要怎么学习Python?
  2. 深圳python培训比较好的机构-深圳十大python培训机构排名
  3. 用 Parser Combinator 解析 Cirru 的缩进语法
  4. 用7*7的卷积核分类9*9的图片到底应该用几个卷积核?55个
  5. TF学习——TF之TFOD:基于TFOD AP训练ssd_mobilenet预模型+faster_rcnn_inception_resnet_v2_模型训练过程(TensorBoard监控)全记录
  6. Robust principal component analysis?(RPCA简单理解)
  7. DundasWebChart 5.5 破解续.
  8. PIC单片机精通_A/D转换异步串口通讯实例与详解
  9. ML机器学习导论学习笔记
  10. LoadRunner10自带的WEBTOURS,无法显示Flights页面问题解决办法
  11. Python 父类调用子类方法
  12. [转]模块化——Common规范及Node模块实现
  13. 计算机网卡ip怎么设置,怎样为网卡配置ip地址 电脑给网卡设置IP地址的方法有哪些...
  14. C#编写NotifyIcon
  15. Photoshop脚本 图层的栅格化
  16. 如何在Mac上清理磁盘空间?
  17. 全面正面解读:nmn的副作用和危害怎么样?nmn副作用及应对方法?
  18. linux基础知识总结(二)
  19. UE4 Material 101学习笔记——08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶
  20. KCL:蚂蚁自研的配置策略语言

热门文章

  1. Schema initialization FAILED! Metastore state would be inconsistent !!
  2. jupyter notebook报错Failed to load module appmenu-gtk-module
  3. spark中用println输出一些控制信息
  4. ubuntu16.04修改xfce下的gedit的背景颜色
  5. python链式赋值与C++赋值的结果比较与分析
  6. 64位ubuntu16.04下pycharm无法切换fcitx输入法和无法输入中文的问题
  7. 【机器学习】集成学习之boosting AdaBoost
  8. 矩阵论基础知识4——强大的矩阵奇异值分解(SVD)及其应用
  9. SQL server management 查询所有触发器
  10. java使用jeids实现redis2.6的list操作(4)