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)。

 
Source
 
看样例就知道是斐波那契数列,但是数据范围是1-200,早就超出long long 的范围,所以要用字符串模拟大数加法来写,应该只要过了hdu1002都能写出来。
代码:

 #include<iostream>
#include<string>
using namespace std;
string a[];
string add(string x,string y)
{
int n=x.length();
int m=y.length();
if(m>n)//为了方便,令y为短的那个数
{
swap(x,y);
swap(n,m);
}
string ans;
int t=,c=,d=n-;
for(int i=m-;i>=;i--)//对齐最短的,从尾部相加
{
int s=x[d--]-''+y[i]-''+c,flag=;//c用于进位,flag标记是否要进位
if(s>)
{
s=s-;
flag=;//标记要进位
}
ans+=s+'';//赋给新串
if(flag)//需要进位则下一位+1
c=;
else
c=;
}
for(int i=d;i>=;i--)//将长的剩下的赋给新串
{
int s=x[i]+c-'',flag=;
if(s>)
{
s=s-;
flag=;
}
ans+=s+'';
if(flag)
c=;
else
c=;
}
if(c)//最后还剩一位没进
{
ans+=+'';
}
string f;
for(int i=ans.length()-;i>=;i--)//将字符串翻转
f+=ans[i];
return f;
}
int main()
{
a[]="";
a[]="";
for(int i=;i<=;i++)//打表
a[i]=add(a[i-],a[i-]);
int n;
while(cin>>n)
{
cout<<a[n]<<endl;
}
return ;
}

hdu5686大数斐波那契的更多相关文章

  1. How many Fibs?(poj 2413)大数斐波那契

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/C Description Recall the defi ...

  2. java大数 斐波那契数列

    java大数做斐波那契数列:  思路:1.       2.可以用数组存着 import java.math.BigInteger; import java.util.Scanner; public ...

  3. HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  4. POJ2506:Tiling(递推+大数斐波那契)

    http://poj.org/problem?id=2506 #include <iostream> #include <stdio.h> #include <strin ...

  5. HDOJ/HDU 5686 Problem B(斐波拉契+大数~)

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

  6. HDOJ/HDU 1865 1sting(斐波拉契+大数~)

    Problem Description You will be given a string which only contains '1'; You can merge two adjacent ' ...

  7. P2626 斐波那契数列(升级版)(合数的质数分解, 大数为素数的概率十分小的利用)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1)=1f(1) = 1 f(1)=1 f(2)=1f(2) = 1f(2)=1 f(n)=f(n−1)+f(n−2)f(n) = f ...

  8. HPU 1471:又是斐波那契数列??(大数取模)

    1471: 又是斐波那契数列?? 时间限制: 1 Sec 内存限制: 128 MB 提交: 278 解决: 27 统计 题目描述 大家都知道斐波那契数列吧?斐波那契数列的定义是这样的: f0 = 0; ...

  9. HDU 1715 (大数相加,斐波拉契数列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1715 大菲波数 Time Limit: 1000/1000 MS (Java/Others)     ...

随机推荐

  1. C语言面试题分类->位运算

    1.不用临时变量交换两个整数. a = a ^ b; b = a ^ b; a = a ^ b; 2.实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如9的二进制是1001,则输出2. i ...

  2. 如何设置记事本( .txt文件)的默认编码为UTF-8?

    1.在桌面新建一个文本文档,不要写入任何内容,然后手动另存为,将此文档编码改为UTF-8,然后将文件名字改为template.txt: 2.再将template.txt移动到C:\Windows\Sh ...

  3. H5和CSS

    参考文档:https://blog.csdn.net/caseywei/article/details/81105544 *)DOCTYPE的作用 如:<!DOCTYPE html>  标 ...

  4. ping vs telnet, what is the difference between them and when to use which?

    Ping is an ICMP protocol. Basically any system with TCP/IP could respond to ICMP calls if they were ...

  5. eclipse启动报错

    我的是win64位系统,eclipse,jdk1.8    64位 原因:网上说是jdk和eclipse的版本不一致导致的(32位jdk64位eclipse,或者相反): 解决过程: 安装了jdk1. ...

  6. VMware+CentOS7学习记录

    CentOS命令记录 1.su root 进入最高权限 2.cd  /位置       即进入该文件 3.中文与英文之间的切换:win+空格 添加中文的步骤:https://blog.csdn.net ...

  7. python webbrowser模块(浏览器操作)

    webbrowser模块提供了一个高级接口来显现基于Web的文档,大部分情况下只需要简单的调用open()办法. webbrowser定义了如下的反常: exception webbrowser.Er ...

  8. python学习笔记5-字典

    # 字典(哈希映射.关联数组) d0 = {'a': 2, [0,1]:[1,2,3]} # TypeError: unhashable type: 'list' # 值可以是任意数据类型,但键不能是 ...

  9. java实现控件的移动及使用鼠标改变控件大小

    package cn.com.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; ...

  10. 牛客随笔(c++)

    1.关于指针的字节大小: 当为32位系统时大小为4字节,64位系统时大小为8字节: #include<iostream> using namespace std; int main() { ...