Fbonacci递归算法:(n最大为100以内)
============================================================
int fib(int n)
{
if(n<=1)return 1;
return fib(n-1)+fib(n-2);
}
============================================================
Fibonacci数学方法:(n最大为1473)
============================================================
F(n)=1/sqrt(5)*((pow((1+sqrt(5))/2,n+1)-(pow((1-sqrt(5))/2,n+1));
============================================================
Fbonacci前4位和后4位:
前4位测周期,后4位打表:
============================================================
#include <stdio.h>
#include <math.h>
#define aa (sqrt(5.0)+1.0)/2
int last[15000]={0,1,1,2,3,5};
int main()
{
int i,n,Fibonacci[40]={0,1,1,2,3,5};
double ans;
/*测试周期
int T = 0;
for (i=3;i<=120000;i++)
{
last[i] = (last[i-2]+last[i-1])%10000;
if(last[i] == last[2]&&last[i-1] == last[1])
{
T = i;
break;
}
}
printf("%d\n",T-2);
*/
/*后4位打表*/
for (i=3;i<15000;i++)
last[i] = (last[i-2]+last[i-1])%10000;
for(i=6;i<40;i++)
Fibonacci[i] = Fibonacci[i-1]+Fibonacci[i-2];
while (scanf("%d",&n)!=EOF)
{
if(n<40)
printf("%d\n",Fibonacci[n]);
else
{
ans=-0.5*(log10(5.0))+n*log10(aa);
ans-=(int)ans;
ans=pow(10.0,ans);
while(ans<1000)
ans*=10;
printf("%d...",(int)ans);
printf("%4.4d\n",last[n%15000]);
}
}
return 0;
}
============================================================
公式:sum(0-n)( com(n,k)*fibonacci(k) )= fibonacci(2*n);
再根据下面模板求得f(2n)即可。
============================================================
示例题目:A Problem With Fibonacci Sequence
Fibonacci sequence is well-known in the world. We define Fibonacci sequence as follows: F(0) = 0, F(1) = 1.
F(n) = F(n-1) + F(n-2). It’s easy for us to calculate F(n) mod m. But this time we want to make the problem
more difficult. We want to calculate the formula: sum(0-n)( com(n,k)*fibonacci(k) ) is the combination number.
Sample Input
2
1 30000
2 30000
Sample Output
1
3
============================================================
Fbonacci模板,求f(n) % m的值:
f(n) = p * f(n - 1) + q * f(n - 2);
============================================================
#include <iostream>
using namespace std;
int main()
{
__int64 p , q , f[ 3 ] , n , m , y , yi;
__int64 a[ 64 ][ 4 ], g[ 4 ] , h[ 4 ] , ans;
int i , j , k , ff[ 64 ];
while (scanf ("%I64d %I64d %I64d %I64d %I64d %I64d" ,
&p , &q , &f[ 1 ] , &f[ 2 ] , &n , &m) != EOF)
{
if (n < 3)
{
printf ("%I64d\n" , f[ n ] % m);
continue;
}
a[ 0 ][ 0 ] = p % m;
a[ 0 ][ 1 ] = q % m;
a[ 0 ][ 2 ] = 1 % m;
a[ 0 ][ 3 ] = 0 % m;
y = n;yi = 0;
while (y)
{
y /= 2 ;
yi ++;
}
for (i = 1 ; i < yi ; ++ i)
{
a[ i ][ 0 ] = (a[i - 1][ 0 ] * a[i - 1][ 0 ] + a[i - 1][ 1 ] * a[i - 1][ 2 ]) % m;
a[ i ][ 1 ] = (a[i - 1][ 0 ] * a[i - 1][ 1 ] + a[i - 1][ 1 ] * a[i - 1][ 3 ]) % m;
a[ i ][ 2 ] = (a[i - 1][ 2 ] * a[i - 1][ 0 ] + a[i - 1][ 3 ] * a[i - 1][ 2 ]) % m;
a[ i ][ 3 ] = (a[i - 1][ 2 ] * a[i - 1][ 1 ] + a[i - 1][ 3 ] * a[i - 1][ 3 ]) % m;
}
memset (ff , 0 , sizeof (ff));
n = n - 2;
k = 0;
while (n)
{
ff[ k ] = n % 2;
n = n / 2;
k ++;
}
g[ 0 ] = g[ 3 ] = 1;
g[ 1 ] = g[ 2 ] = 0;
for (i = 0 ; i < k ; ++ i)
{
if (ff[ i ])
{
h[ 0 ] = (g[ 0 ] * a[ i ][ 0 ] + g[ 1 ] * a[ i ][ 2 ]) % m;
h[ 1 ] = (g[ 0 ] * a[ i ][ 1 ] + g[ 1 ] * a[ i ][ 3 ]) % m;
h[ 2 ] = (g[ 2 ] * a[ i ][ 0 ] + g[ 3 ] * a[ i ][ 2 ]) % m;
h[ 3 ] = (g[ 2 ] * a[ i ][ 1 ] + g[ 3 ] * a[ i ][ 3 ]) % m;
for (j = 0 ; j < 4 ; ++ j)
g[ j ] = h[ j ];
}
}
ans = (g[ 0 ] * f[ 2 ] + g[ 1 ] * f[ 1 ]) % m;
printf ("%I64d\n" , ans);
}
return 0;
}
============================================================
大斐波数
求的是F(n)的1000位内的大斐波数,可扩展(自己修改)
============================================================
#include <iostream>
#include <iomanip>
using namespace std;
#define MAX 10000000
#define SIZE 100
class BigNum
{
public:
int a[SIZE];
BigNum()
{
for(int i=0;i<SIZE;i++)
a[i]=0;
}
BigNum operator+(BigNum & b);
void operator=(BigNum & b);
void f();
void display();
};
BigNum BigNum::operator+(BigNum & b)
{
BigNum p;
for(int i=0;i<SIZE;i++)
{
p.a[i]=a[i]+b.a[i];
}
return p;
}
void BigNum::operator=(BigNum & b)
{
for(int i=0;i<SIZE;i++)
{
a[i]=b.a[i];
}
}
void BigNum::f()
{
for(int i=0;i<SIZE;i++)
{
if(a[i]>MAX)
{
a[i+1]+=a[i]/MAX;
a[i]%=MAX;
}
}
}
void BigNum::display()
{
for(int i=SIZE-1;i>=0;i--)
{
if(a[i]!=0)
{
cout<<a[i];
while(i--)
{
cout << setw(7) << setfill('0') << a[i];
}
break;
}
}
cout<<endl;
}
int main()
{
BigNum num[1001];
num[1].a[0]=1;
num[2].a[0]=1;
for(int i=3;i<=1000;i++)
{
num[i]=num[i-1]+num[i-2];
num[i].f();
}
int n,m;
cin>>n;
while(n--)
{
cin >> m;
num[m].display();
}
return 0;
}
分享到:
相关推荐
简单的基于 Kotlin 和 JavaFX 实现的推箱子小游戏示例代码。这个游戏包含了基本的地图布局、玩家控制角色推动箱子到目标位置的功能,不过目前还只是一个简单的控制台版本,你可以根据后续的提示进一步扩展为图形界面版本并添加推流相关功能(推流相对复杂些,涉及到网络传输和流媒体协议等知识,需要借助如 FFmpeg 或者专门的流媒体库来实现,这里先聚焦游戏本身的逻辑构建)
基于simulink建立的PEMFC燃料电池机理模型(国外团队开发的,密歇根大学),包含空压机模型,空气路,氢气路,电堆等模型。 可以正常进行仿真。
Web端功能1.文件分类管理(文件、图片和视频),可以检索文件(按照分类查看,也可以根据名字检索),可以删除和添加文件,文件可以下载,图片和视频可以在线查看播放2.文件有个物理位置的属性,例如“A柜14排”3.文件可以被用户借阅,可以查看到文件的借阅状态。4.可以查看借阅历史列表信息。(任何借阅的记录都保存下来,用列表的方式展现出来)。5.目标角色分教师、教学秘书、专业负责人、教学院长及管理员6.角色教师通过系统提供的界面,(1)输入教学成果,包括项目、论文、著作封面、获奖证书等,提供成果作证材料,秘书审核后再提交给专业负责人及教学院长审核;(2)输入教学资料,包括教学日历、教学大纲、考试考核方法改革申报表、课程试卷及答案等,上传图片或者PDF文档,提交给教学秘书、专业负责人及教学院长审核。7.教学秘书审核教师提交的教学成果,依据作证材料逐条审核,然后提交给专业负责人及教学院长再作审核。8.专业负责人和教学院长相继审核,给出通过意见或者退回。9.管理员角色负责管理维护系统内部教师信息。10.系统界面设计美观,具有较高的易用性,能够进行角色权限控制...
物流工厂往复式升降机2018可编辑全套技术资料100%好用.zip
【资源说明】 基于USuperStar酒店管理系统(java web课程设计)、全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
在信息技术飞速发展的今天,我们正生活在一个信息大爆炸的时代。随着计算机技术的进步和移动终端的普及,国内信息技术已经走在了世界前列。在这样的背景下,传统的手工信息处理方式已经无法满足现代社会的需求,必须依靠计算机技术来提高信息处理的效率。 本次开发的小区物业管理系统采用Java技术,旨在通过计算机化管理提升小区物业信息管理的效率。系统实现了报修管理、房屋管理、收费管理、停车位管理、投诉管理和用户管理等多项功能。 小区物业管理系统的计算机化处理,确保了数据传输的即时性,无论是数据的获取还是输入,都能迅速反馈,极大提升了工作效率。同时,系统采用MySQL数据库,为数据提供了安全可靠的存储解决方案。
设计一个银行存取款管理系统,能够输入和查询客户存款取款记录。在客户文件中,每个客户信息是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额;在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种。本系统能够输入客户存款或取款记录;根据客户姓名查询存款和取款记录
Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
在脚本之家的VBS栏目中,我们精心培育并推广了这一资源,使其逐渐被公众所熟知。我们所提供的代码资源,涵盖了从基础到高级技巧的广泛知识,是长期从网络收集和整理的结果,极具收藏价值,是学习VBS不可或缺的平台。 由于过去在查找和分类这些资料时存在不便,我们对内容进行了重新整理。在批处理之家站长的协助下,我们将这些资料转换成了更易于使用的CHM格式。尽管偶尔会出现乱码,且部分VBS代码可能会被杀毒软件误报,但我们确保这些资料是安全可用的。 我们对大家的支持表示衷心的感谢,并鼓励您访问脚本之家VBS栏目的最新内容。
基于改进A*算法融合DWA算法的机器人路径规划MATLAB仿真程序(含注释) 包含传统A*算法与改进A*算法性能对比?改进A*算法融合DWA算法规避未知障碍物仿真。 改进A*算法做全局路径规划,融合动态窗口算法DWA做局部路径规划既可规避动态障碍物,又可与障碍物保持一定距离。 任意设置起点与终点,未知动态障碍物与未知静态障碍物。 地图可更改,可自行设置多种尺寸地图进行对比,包含单个算法的仿真结果及角速度线速度姿态位角的变化曲线,仿真图片丰富
阈值分割是常见的直接对图像进行分割的算法,根据图像像素的灰度值的不同而定。对应单一目标图像,只需选取一个阈值,即可将图像分为目标和背景两大类,这个称为单阈值分割;如果目标图像复杂,选取多个阈值,才能将图像中的目标区域和背景被分割成多个,这个称为多阈值分割,此时还需要区分检测结果中的图像目标,对各个图像目标区域进行唯一的标识进行区分。阈值分割的显著优点,成本低廉,实现简单。当目标和背景区域的像素灰度值或其它特征存在明显差异的情况下,该算法能非常有效地实现对图像的分割。阈值分割方法的关键是如何取得一个合适的阈值,近年来的方法有:用最大相关性原则选择阈值的方法、基于图像拓扑稳定状态的方法、灰度共生矩阵方法、最大熵法和峰谷值分析法等,更多的情况下,阈值的选择会综合运用两种或两种以上的方法,这也是图像分割发展的一个趋势。
是一个包含英特尔公司(Intel Corporation,股票代码:INTC)从1980年至2024年历史股票数据的数据集。这个数据集提供了每日的股票价格信息,包括开盘价、最高价、最低价、收盘价以及调整后的收盘价,同时还记录了每天的交易量。这些数据对于分析英特尔的市场表现、股票价格趋势以及进行金融分析和预测模型的构建非常有用。 数据集的特点包括: 时间跨度长:覆盖了超过40年的时间,能够提供长期的股票市场趋势分析。 数据详细:包含了每日的股价和交易量,有助于进行深入的技术分析。 调整后的价格:提供了调整后的收盘价,考虑了股票分割、股息和其他公司行为,使得数据更加准确。 来源可靠:数据来源于Yahoo Finance,这是一个广泛认可的获取历史金融数据的平台。 使用这个数据集,分析师和投资者可以进行多种分析,如时间序列分析、股票价格预测和财务分析。这些分析有助于理解英特尔作为半导体行业领导者的发展和表现,以及其在个人电脑技术背后的推动作用。数据集的长期视角也为研究市场趋势和投资决策提供了宝贵的信息。
内容概要:包含温湿度、空气质量、用户交互菜单等功能设计的51单片机智能闹钟 适用人群:对51单片机有基础的了解,具备一定的C语言编程基础,学生与单片机爱好者 能学到什么:仅做借鉴参考,相关设计的思路,一些基础的单片机编程方法。 阅读建议:内置较详细注释可供理解查看,仍有许多不足之处,仅做参考,多多指教。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
【资源说明】 基于Java EE 课程设计 Java web 课程设计 基于spring Boot + Mybatis Plus + Vue + Android原生,前后端分离。附带设计报告、UML建模,团队协作赛鸽数据管理系统、全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
简介:money 是一个专为 Python 设计的货币类库,旨在帮助开发者更方便、更精确地处理货币相关的操作。 核心功能 精确的货币表示与计算:使用decimal类型来处理货币金额,避免了使用浮点数进行货币计算时可能出现的精度丢失问题,从而确保计算结果的高精度,适用于对精度要求极高的金融交易、电子商务、账单等领域. 多货币支持:内置了符合 ISO 4217 标准的世界各国货币数据,支持多种货币的符号、单位、汇率等功能,可轻松创建不同货币类型的货币对象,并对其进行各种数学运算,如加、减、乘、除等,且能确保精度的正确性,适合需要进行国际化货币处理的应用. CLDR 后端本地化格式:提供了可选的 CLDR(Common Locale Data Repository)后端本地化格式功能,通过format()方法,可根据不同的地区设置,将货币金额格式化为符合当地习惯的字符串形式,如$1,234.57(美国格式)、1.234,57\xa0$(西班牙格式)等,增强了货币显示的本地化和国际化适应性. 可扩展的货币兑换解决方案:通过 “安装” 实现了抽象基类。
管理员功能需求: 管理员登陆后,主要模块包括首页、个人中心、用户管理、教师管理、课程信息管理、班级信息管理、试题管理、在线试题管理、考试管理等功能。 用户功能需求: 用户登陆后,主要模块包括首页、个人中心、课程信息管理、班级信息管理、考试管理等功能。 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
AppWizard has created this TcpClient application for you. This application not only demonstrates the basics of using the Microsoft Foundation classes but is also a starting point for writing your application. This file contains a summary of what you will find in each of the files that make up your TcpClient application. TcpClient.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share the project (.dsp)
本项目是自己做的设计,有GUI界面,完美运行,适合小白及有能力的同学进阶学习,大家可以下载使用,整体有非常高的借鉴价值,大家一起交流学习。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
两穴tray盘自动上下料设备sw17可编辑全套技术资料100%好用.zip