ACMSTEP 2.2.1 Fibonacci //斐波那契数列通式

本文介绍了如何使用通式和对数性质来解决高精度的斐波那契数列问题,强调在使用C++标准库时要注意整数重载和数学库函数的正确调用方式。
摘要由CSDN通过智能技术生成

原题链接

关于斐波那契数列,维基百科有很全面的说明!http://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B8
此题高精度做斐波那契数列 简直是不可能的 数量级太大了,通式 和 对数的性质 解决了此题。
还是注意,HDU用的是所有标准库都未进行整数重载的 C++,提交C++的时候应该注意 数学库函数中是否有整数形参调用!比如log(10)是非法的!必须是log(10.0)!!


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

const double sq5 = sqrt(5.00);

double val(double n)
{
	return ( log (1.0 / sq5) + n * log (0.5 * (double)(1 + sq5)))/log (10.0);
}
int b[110];
int main()
{
	int a, i;
	b[0] = 0;
	b[1] = b[2] = 1;
	for (i = 3; i<100; i++)
	{
		b[i] = b[i-1] + b[i-2];
	}
	while (cin>>a)
	{
		double temp = val((double )a);
		if (temp - 4 > 1e-6)
		{
			cout <<(int)(1000*pow(10.0, (double)(temp - floor(temp))))<<endl;
		}
		else
			cout<<b[a]<<endl;
	}
	
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,C:\Users\AAA\AppData\Local\Arduino15\packages\STMicroelectronics\tools\STM32Tools\2.2.1/win/busybox.exe是Arduino IDE中与STM32开发板相关的工具之一。如果你需要重新安装或更新相关的工具,你可以按照以下步骤进行操作: 1. 首先,你需要确保你已经安装了Arduino IDE。如果你还没有安装Arduino IDE,你可以从官方网站下载并安装最新版本的Arduino IDE。 2. 然后,你需要下载并安装STM32开发板的支持包。根据引用提供的信息,你可以从以下链接下载package_stmicroelectronics_index.json文件: https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json 3. 下载完成后,将package_stmicroelectronics_index.json文件放置在C:\Users\<你的用户名>\AppData\Local\Arduino15目录下。请确保替换<你的用户名>为你的实际用户名。 4. 打开Arduino IDE,点击"文件"菜单,选择"首选项"。在"首选项"窗口中,找到"附加开发板管理器网址"字段,并点击右侧的编辑按钮。 5. 在弹出的对话框中,将以下URL添加到列表中: https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json 6. 点击"确定"关闭对话框,然后点击"工具"菜单,选择"开发板",再选择"开发板管理器"。 7. 在"开发板管理器"窗口中,搜索"STM32"并选择"STMicroelectronics STM32 Boards"。点击"安装"按钮,等待安装完成。 8. 安装完成后,你应该能够在"工具"菜单的"开发板"子菜单中找到STM32开发板的选项。 通过以上步骤,你可以重新安装或更新与STM32开发板相关的工具。请注意,这只是其中一种方法,具体操作可能因个人环境而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值