高精度处理斐波那契序列(C语言)
#include<stdio.h>
#include<string.h>
//memset,strcpy,strlen函数头文件
int main(void)
{
char sum[];//用来保存产生的下一个斐波那契数,当然了,是字符串形式
long long m,i,max,s = ;//max用来存放数位较长的个数
char s1[],s2[]; //用来存储斐波那契数列的相邻两个数,并以字符串形式进行存储
int a[],b[];//转存到int数组中
long long n;
scanf("%lld",&n);//输入你想要输出的菲波那切数列的第多少位 strcpy(s1,""); //初始第一项为"1";
strcpy(s2,"");//初始第二项为"1"; for(m=;m<n;m++)//大循环
{
//每一次都需要将a,b数组所有字节置0
memset(a,,sizeof(int)*);
memset(b,,sizeof(int)*); //a[0]用来保存每一次第一个菲波那切数就是s1的长度 ,并将菲波那切数以逆向方式存储到a数组中
a[] = strlen(s1);
for(i=;i<=a[];i++)
{
a[i] = s1[a[] - i] - '';//a[0]-i便是倒序
} //b[0]用来保存每一次第二个菲波那切数就是s2的长度 ,并将菲波那切数以逆向方式存储到b数组中
b[] = strlen(s2);
for(i=; i<=b[]; i++)
{
b[i] = s2[b[] - i] - '';//b[0]-i便是倒序
} //max存放数位较大的
//因为相加是倒序相加,因此需要找到位数长的,并记录个数
max =( a[]>b[]?a[]:b[] ); for(i=;i<=max;i++)
{
//将a[i]和b[i]的值赋给a[i],a[i]可能大于10,或者小于10;
//大于10则要进一位;
//自身变成a[i]%10;
a[i]+=b[i];//此时a[i]可能大于10
a[i+]+=a[i]/;//无论a[i]是不是大于10,都除以10,发给下一位,也就是所谓的进一位
a[i]%=;//无论a[i]是不是大于10,求余10,发给a[i]
} //可能进位导致较长位数+1;
max++; //进位导致0的出现 ,出现多余有效数字
while(a[max] == && max > )
{
max--;
} //将获得的新的斐波那契数以字符串形式发送给一个数组,在通过strcpy函数复制给s2,
for (i = max,s = ;i>=;i--,s++)
{
sum[s] = a[i]+'';//再将数字转化为字符
} strcpy(s1,s2);//将s2复制给s1
strcpy(s2,sum);//将sum数组里面的字符串复制给s2
}
printf("%s",s2);
return ;
}
高精度处理斐波那契序列(C语言)的更多相关文章
- HDU 5620 KK's Steel (斐波那契序列)
KK's Steel 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/J Description Our lovely KK ha ...
- pytho查找斐波那契序列中的值
''' 实现斐波那契序列,查找其中第N个数的值 ''' def FeiBSequence(list,N): length=len(list); i=0; while i<length: if N ...
- 爬楼梯问题-斐波那契序列的应用.md
N 阶楼梯,一次可以爬1.2.3...n步,求爬楼梯的种类数 /** * 斐波那契序列 */ public class ClimbingStairs { // Sol 1: 递归 // 递归 公式:F ...
- [LeetCode] Split Array into Fibonacci Sequence 分割数组成斐波那契序列
Given a string S of digits, such as S = "123456579", we can split it into a Fibonacci-like ...
- 利用python实现二分法和斐波那契序列
利用python实现二分法:我的实现思路如下 1.判断要查找的值是否大于最大值,如果大于则直接返回False 2.判断要查找的值是否小于最小值,如果小于则直接返回False 3.如果要查找的值在最大值 ...
- 最长斐波那契序列-LeetCode-873
英文版A sequence X_1, X_2, ..., X_n is fibonacci-like if: - n >= 3- X_i + X_{i+1} = X_{i+2} for all ...
- 【严蔚敏】【数据结构题集(C语言版)】1.17 求k阶斐波那契序列的第m项值的函数算法
已知k阶斐波那契序列的定义为 f(0)=0,f(1)=0,...f(k-2)=0,f(k-1)=1; f(n)=f(n-1)+f(n-2)+...+f(n-k),n=k,k+1,... 试编写求k阶斐 ...
- 【剑指offer】斐波那契序列与跳台阶
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25337983 剑指offer上的第9题,简单题,在九度OJ上測试通过. 主要注意下面几点: ...
- [Swift]LeetCode842. 将数组拆分成斐波那契序列 | Split Array into Fibonacci Sequence
Given a string S of digits, such as S = "123456579", we can split it into a Fibonacci-like ...
随机推荐
- java基础——深拷贝和浅拷贝的区别
浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝. 深拷贝:对基本数据类型进行值传递,对引用数据类型船舰一个新的对象,并复制内容,这是深拷贝.
- Codeforces Round #604 (Div. 2) 部分题解
链接:http://codeforces.com/contest/1265 A. Beautiful String A string is called beautiful if no two con ...
- VUE.js入门学习(3)-深入理解VUE组建
1.使用组件的细节点 (1)is="模版名" (2)在子组建定义data的时候,data必须是一个函数,而不能是一个对象,每个子组建都有自己的数据存储.之间不会相互影响. (3)操 ...
- JAVA中汉字的Compare排序
当调用String.compare方法的时候,比较的是Unicode码,并不能对汉字进行准确的排序,所以汉字比较时会出现比较混乱的结果. java.text.Collator类中有一个getInsta ...
- Mybatis实现条件查询(三)
1. 准备 请先完成Mybatis基本配置(一)的基本内容 2. 疑问 我们再Mybatis基本配置(一)中实现了按照商品ID进行查询商品信息,可是在实际应用中却很少出现根据ID来查询商品的情况.因为 ...
- HDU - 1150 Machine Schedule(二分匹配---最小点覆盖)
题意:有两台机器A和B,A有n种工作模式(0~n-1),B有m种工作模式(0~m-1),两台机器的初始状态都是在工作模式0处.现在有k(0~k-1)个工作,(i,x,y)表示编号为i的工作可以通过机器 ...
- C++实现顺序表的14种操作
C++顺序表的操作 2017-12-27 // 顺序表.cpp: 定义控制台应用程序的入口点. //Author:kgvito YinZongYao //Date: 2017.12.27 #inclu ...
- (day 1)创建项目--1
1.利用cmd(命令行)创建项目myblog 确定好项目要放在哪个directory. dir一下创建好的项目看下有什么 django自带有一个小型的服务器可通过 runserver 启动它 可取浏 ...
- contos7 共享文件夹开机自动挂载
网上很多文章都说改文件/etc/fstab 我试了很多次都不行 然后看到另一个方法 在/etc/rc.d/rc.local 增加挂在脚本这个时候要注意执行权限问题 我是这样做的 sudo mount ...
- HTML5 Canvas——基础入门
认识canvas html5的新标签 <canvas>标签只是图像容器,必须使用js来绘制图形 可以通过多种方法使用canvas绘制路径,盒,圆,字符以及添加图像 canvas画布 < ...