题目

Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。

输入

输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。

输出

输出为N行,每行为对应的f(Pi)。

样例输入

5
1
2
3
4
5
样例输出

1
1
2
3
5

分析与解答:

biginteger分析参见:
https://blog.csdn.net/mrcrack/article/details/53263235
代码:

#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
struct BigInteger {static const int BASE = 100000000;static const int WIDTH = 8;vector<int> s;BigInteger(long long num = 0) { *this = num; } // 构造函数BigInteger operator = (long long num) { // 赋值运算符s.clear();do {s.push_back(num % BASE);num /= BASE;} while (num > 0);return *this;}BigInteger operator = (const string& str) { // 赋值运算符s.clear();int x, len = (str.length() - 1) / WIDTH + 1;for (int i = 0; i < len; i++) {int end = str.length() - i*WIDTH;int start = max(0, end - WIDTH);sscanf(str.substr(start, end - start).c_str(), "%d", &x);s.push_back(x);}return *this;}BigInteger operator + (const BigInteger& b) const {BigInteger c;c.s.clear();for (int i = 0, g = 0; ; i++) {if (g == 0 && i >= s.size() && i >= b.s.size()) break;int x = g;if (i < s.size()) x += s[i];if (i < b.s.size()) x += b.s[i];c.s.push_back(x % BASE);g = x / BASE;}return c;}
};ostream& operator << (ostream &out, const BigInteger& x) {out << x.s.back();for (int i = x.s.size() - 2; i >= 0; i--) {char buf[20];sprintf(buf, "%08d", x.s[i]);for (int j = 0; j < strlen(buf); j++) out << buf[j];}return out;
}istream& operator >> (istream &in, BigInteger& x) {string s;if (!(in >> s)) return in;x = s;return in;
}int main(){BigInteger a,b,ans[1005];ans[1]=1;ans[2]=1;for(int i=3;i<=1001;++i){ans[i]=ans[i-1]+ans[i-2];}int n;cin>>n;while(n--){int i;cin>>i;cout<<ans[i]<<endl;}
}

(大整数类Biginteger)大斐波数相关推荐

  1. 一点一点解读紫书中例子--大整数类BigInteger (1)

    首先贴上前一部分代码: struct BigInteger {static const int BASE = 100000000;static const int WIDTH = 8;vector&l ...

  2. ACM与Java -- 大整数类的常用函数一览表

    BigInteger abs()  此方法返回一个BigInteger,其值是此BigInteger的绝对值. 2 BigInteger add(BigInteger val) 此方法返回一个BigI ...

  3. C++应用之自定义大整数类

    写在前面:C语言在应用时有很多整数溢出的情形,如果运算结果很大,就需要用到所谓的高精度算法,即用数组来储存整数,并模拟手算的方法进行四则运算,这些算法并不难实现,但是考虑到易用性问题,即如果能像使用i ...

  4. 关于大整数类加减法算法的一些思考

    这几天做C++作业,有一道题要求实现大整数类,即不受内部数据类型表示范围限制的大数四则运算,比如123456789987654321987654321+987654321234567898765432 ...

  5. java大整数类减1,自己写Java大整数《1》表示和加减

    自己写Java大整数<一>表示和加减 上周粗略计划自己写Java下的大整数运算. 后来仔细想想其实自己动手写大整数运算有1好2不好.2个不好分别是: 1,肯定没有Java内置的BigInt ...

  6. java大整数_java处理大整数

    /* 给两个大整数A和B,计算并输出A + B = ? */ import java.io.*; import java.util.*; import java.math.*; public clas ...

  7. 大整数运算之 大整数加法、减法、乘法

    其实大整数的问题都是在像我们打草稿的时候列竖式一样的,不要告诉我你不知道什么叫竖式~!其实我开始也不知道它叫这个名字: 所谓竖式,就是你打草稿算算术的方法,小学知识:比如你写 11+9: 11 +   ...

  8. 大整数乘法(大整数乘int型)

    算法思想: 1.将大整数倒序储存到数组中(方便进位) 2.对同位相乘后的数取模10,推入结果数组中 3.对同位相乘后的数除以10,作为进位 5.去除可能出现的前导零 4.完成乘法后倒序输出 补充知识: ...

  9. 大整数相乘java_大整数乘法—java实现

    大整数相乘 参考博客: https://blog.csdn.net/oh_maxy/article/details/10903929 https://blog.csdn.net/u010867294/ ...

最新文章

  1. Yolov3 的 OneFlow 实现
  2. 服务器负载不高 响应慢_负载均衡有哪几大类别?
  3. 剔除异常值栅格计算器_基于数据流的异常检测: Random Cut Forest
  4. 云原生数据湖分析DLA 2020年年度总结
  5. How myTask application is loaded in CreateFromAccount scenario
  6. [Selenium] 最大化或自定义浏览器的大小
  7. K均值聚类关于初始聚类中心的探讨
  8. python中list怎么用_python中list(列表)的使用方法总结(图文)
  9. 推荐系统实践:从多领域优化到AutoML框架
  10. java 全排列非递归算法_我的字典序全排列java程序,怎么改成非递归算法
  11. Matlab自适应均线_基于MATLAB的自回归移动平均模型(ARMA)在股票预测中的应用
  12. 硬件时序图软件——TimeGen_v3.3
  13. java 自动补全_eclipse自动补全的设置
  14. python计算1的平方减2的平方加3的平方减4的平方怎么算_墙体的面积怎么算的快?墙的平方快速计算方法...
  15. 深度学习笔记(15) 人的表现
  16. java编辑word文档,向word文档尾部添加图片
  17. 输入一个字符串,将其逆序输出。
  18. Linux常用指令之——grep用法
  19. 如何干净彻底的卸载SQL server2008
  20. GIS开发:shp文件编码格式转换

热门文章

  1. js 自己试验 创建对象例子
  2. linux切换目录使用命令,linux命令切换目录的使用方法
  3. go 调用c语言,golang之调用C语言代码
  4. 值从哪里来_Linux used内存到底去哪里了呢?
  5. 华为官方强制线刷工具_一加8/8Pro 线刷救砖
  6. oracle查询慢怎么优化,Oracle查询优化-怎样建立索引优化下面的查询语句啊
  7. 获取java 私有属性或 方法
  8. springMVC 控制层添加异步线程
  9. JavaScript 的 Date 方法的使用
  10. js判断url链接是否可访问(服务可连接,可用)