BigNums—— 斐波那契 预处理(代码)
来源:互联网 发布:美亚保险 淘宝 编辑:程序博客网 时间:2024/06/05 18:19
- 通过String数组存储每一个大数
- 大数相加:先从小的数开始a+b+进位,再保存进位数,再赋值;再从大的数继续b+进位,再赋值;最后判断是否需要再往前进位;(或者可以先a+b,再进位,再赋值)
#include<stdio.h>#include <string>#include <iostream>using namespace std;const int MAXFIB = 1001;//斐波那契个数string sum[MAXFIB];void Add(int num){ int i; int LengthOfTow = sum[num - 1].length() - sum[num - 2].length();//两个数相差的长度 int temp; short CarryBit = 0;//进位 for (i = sum[num - 2].length() - 1; i >= 0; i--)//从两个数中小的数[F(n-2)]开始,再从**string**数组元素倒退,逐个加法进位 { temp = (sum[num - 2][i] - '0') + (sum[num - 1][i + LengthOfTow] - '0') + CarryBit; CarryBit = temp / 10; sum[num] = char((temp % 10) + '0') + sum[num]; } for (i = i + LengthOfTow; i >= 0; i--)//从两个数中大的数[F(n-1)]开始进位 { temp = (sum[num - 1][i] - '0') + CarryBit; CarryBit = temp / 10; sum[num] = char((temp % 10) + '0') + sum[num]; } if (CarryBit != 0)//两数相加,总数位数最多是大数位数+1 { sum[num] = char(CarryBit + '0') + sum[num]; }}void PreFibonacci()//预处理{ sum[0] = "1"; sum[1] = "1"; int i; for (i = 2; i < MAXFIB; i++) { Add(i); //cout <<i << " "<< sum[i] << endl; }}
阅读全文
0 0
- BigNums—— 斐波那契 预处理(代码)
- BigNums——HDUOJ 1002
- BigNums——HDUOJ 1042
- BigNums——HDUOJ 1047
- BigNums——HDUOJ 1063
- BigNums——HDUOJ 1316
- BigNums——HDUOJ 1715
- BigNums
- UVa 11582 巨大斐波那契数列 (预处理 + 快速幂)
- 极简代码(五)—— 斐波那契数列
- 剑指offer(java代码)——斐波那契数列
- 斐波那契数列(代码实现)
- acm 斐波那契博弈(裸题代码)
- 【证明】—— 斐波那契
- 斐波那契数列 C++ 实现代码
- 斐波那契查找算法完整C代码
- 1118的相应代码以及斐波那契函数
- 斐波那契数列(一)——递归
- 笔记-2017.10.21
- A Simple Problem with Integers
- Java的对象序列化
- 多线程经典——生产者消费者问题(加锁版)
- PHP基础知识(1)
- BigNums—— 斐波那契 预处理(代码)
- 字符或数字全排列算法
- 解决NavigationView Item图标不能显示图片原始颜色的问题
- Android 简单解读了ViewStub的代码和注释,其他的不想多说
- 高通410c下载安卓源码
- 洛谷P1902 刺杀大使(二分)
- 基于Matlab的FIR滤波器设计与实现
- Android 多线程 (一)
- 十进制内的任意进制之间的数字转换