博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ/HDU 5686 Problem B(斐波拉契+大数~)
阅读量:6693 次
发布时间:2019-06-25

本文共 971 字,大约阅读时间需要 3 分钟。

Problem Description

度熊面前有一个全是由1构成的字符串,被称为全1序列。你可以合并任意相邻的两个1,从而形成一个新的序列。对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列。

Input

这里包括多组测试数据,每组测试数据包含一个正整数N,代表全1序列的长度。

1≤N≤200

Output

对于每组测试数据,输出一个整数,代表由题目中所给定的全1序列所能形成的新序列的数量。

Sample Input

1
3
5

Sample Output

1
3
8

Hint

如果序列是:(111)。可以构造出如下三个新序列:(111), (21), (12)。

貌似和前面这个题有点类似:

分析:递推加大数~

递推公式为db[i] = db[i-1] + db[i-2],斐波那契数列。

怎么推导出来的呢~~~我能说我是看出来的麽~

设有n个1,可以构成f(n)种。则加一个1的时候,前面n种仍然成立 f(n+1)=f(n)+*;

第n+1个1和第n个1相加构成2,前面n-1个1可以组合的个数。 f(n+1)=f(n)+f(n-1);

大数~用Java很好过的~c的话,只能用数组模拟了。

import java.math.BigInteger;import java.util.Scanner;public class Main{    static BigInteger db[] = new BigInteger[205];    public static void main(String[] args) {        dabiao();        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            int n =sc.nextInt();            System.out.println(db[n]);        }    }    private static void dabiao() {        db[1]=new BigInteger("1");        db[2]=new BigInteger("2");        for(int i=3;i

转载地址:http://rxjoo.baihongyu.com/

你可能感兴趣的文章
【JavaScript】script标签的属性
查看>>
Volley框架源码修改,添加头部验证Hreaders问题
查看>>
【Android开发】布局管理器-表格布局
查看>>
(业务层)异步并行加载ChangeLog
查看>>
数据结构
查看>>
Spring Boot 性能优化
查看>>
王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
查看>>
获取Android签名证书的公钥和私钥
查看>>
【hibernate框架】一对一双向外键关联(Annotation实现)
查看>>
HTML网页禁止鼠标操作脚本
查看>>
Android热修复简单总结
查看>>
K8S 生态周报| 2019.04.08~2019.04.14
查看>>
CSS 火焰?不在话下
查看>>
git 遇到The remote end hung up unexpectedly
查看>>
MySQL 千万级数据表 partition 实战应用
查看>>
设计模式--适配器模式(Adapter Pattern)
查看>>
谈谈我理解的Android组件化
查看>>
docker安装elasticsearch
查看>>
史上最清晰易懂的babel配置解析
查看>>
test
查看>>