二分查找+大整数加法——Poj 2413 How many Fibs?

Aspen Plus下载教程Aspen Plus V14 保姆级安装步骤(附安装包) 26、在WlmAdmin界面中,依次点击【Subnet Servers】、【admin】、【Add Feature】、【From a File】、【To Server and its File】。35、在产品选择页面,勾选需要安装的所有产品(重要:不要勾选【Aspen Online(Plant Data)】),然后点击【File Location】。回到桌面,点击任务栏的【开始菜单】,在【所有应用】中找到【Aspen Plus V14】软件图标,将其拖到桌面上创建快捷方式。9、这里可以更改软件的安装位置。 阅读详情

How many Fibs?
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 9710 Accepted: 3622

Description

Recall the definition of the Fibonacci numbers: 
f1 := 1 

f2 := 2 

fn := fn-1 + fn-2     (n>=3) 

Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a,b].

Input

The input contains several test cases. Each test case consists of two non-negative integer numbers a and b. Input is terminated by a=b=0. Otherwise, a<=b<=10100. The numbers a and b are given with no superfluous leading zeros.

Output

For each test case output on a single line the number of Fibonacci numbers fi with a<=fi<=b.

Sample Input

10 100
1234567890 9876543210
0 0

Sample Output

5
4

思路:

首先算出前480个斐波那契数(第480个斐波那契数的位数101位,满足题目要求的数据范围),然后使用二分查找确定a和b在斐波那契数列的位置,两位置做差,即为中间包含的斐波那契数个数,注意a和b也是斐波那契数时,输出结果特殊处理下。


#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

#define MAXN	500
#define MAXLEN	110
#define LAST MAXLEN-2

char store[MAXN][MAXLEN];	//存储MAXN个斐波那契数
char *Fibs[MAXN];		//存储每个斐波那契数的首地址

//大整数相加
char* IntAddition(char *a, char *b, char *sum)
{
	int i, j, k, first;

	//从末位开始,把a与b对应位的和存入sum中,暂不处理进位
	for (i = strlen(a)-1, j = LAST; i >= 0; i--, j--)
	{
		sum[j] = a[i] - '0';
	}
	for (i = strlen(b)-1, k = LAST; i >= 0; i--, k--)
	{
		sum[k] += b[i] - '0';
	}

	//获取sum中结果的首位位置
	first = j < k ? j : k;

	//处理进位
	for (i = LAST; i >= first; i--)
	{
		sum[i-1] += sum[i] / 10;
		sum[i] = sum[i] % 10 + '0';
	}
	//去除前导'0'
	while (sum[first] == '0' && first < LAST)
	{
		first++;
	}
	//返回sum的首位地址
	return &sum[first];
}

//计算485个斐波那契数
void Fibonacci(void)
{
	memset(store, 0, sizeof(store));
	memset(Fibs, NULL, sizeof(Fibs));

	strcpy(store[1], "1");
	strcpy(store[2], "2");
	Fibs[1] = store[1];
	Fibs[2] = store[2];

	int i;
	for (i = 3; i < 485; i++)
	{
		Fibs[i] = IntAddition(Fibs[i-2], Fibs[i-1], store[i]);
	}
}

int Compare(char *a, char *b)
{
	int lenA = strlen(a);
	int lenB = strlen(b);

	if (lenA == lenB)
	{
		return strcmp(a, b);
	}
	return lenA > lenB ? 1 : -1;
}

int BinarySearch(char *num, bool &flag)
{
	int low = 1;
	int high = 480;
	
	while (low <= high)
	{
		int mid = (low + high) / 2;
		
		int res = Compare(num, Fibs[mid]);
		if (res == 0)
		{
			flag = true; return mid;
		}
		else if (res < 0)
		{
			high = mid - 1;
		}
		else
		{
			low = mid + 1;
		}
	}
	return low;
}

int main(void)
{
	Fibonacci();

	char a[MAXLEN], b[MAXLEN];
	while (scanf("%s %s", a, b) != EOF)
	{
		if (strcmp(a, "0") == 0 && strcmp(b, "0") == 0)
		{
			break;
		}

		bool flagLeft = false;
		bool flagRight = false;
		//分别找出a和b在斐波那契数中的位置
		//当查找的数不是斐波那契数时,二分查找返回的位置是第一个比它大的斐波那契数的位置
		int left = BinarySearch(a, flagLeft);
		int right = BinarySearch(b, flagRight);

		//当b也是斐波那契数时,要把两位置的差值加1
		if (flagRight)
		{
			printf("%d\n", right - left + 1);
		}
		else
		{
			printf("%d\n", right - left);
		}
	}
	return 0;
}


mongodb在游戏开发领域的优势 目前游戏服务器使用mysql作为数据库的较多,然而,使用mongodb来作为存储层,在某些方面比mysql更为方便和适合。 阅读详情

相关推荐

Google账号找回通用方法(尤其是知道账号密码仍无法登录和找回的)

Google账号找回通用方法【尤其是知道账号密码仍无法登录和找回的】普通找回注意:适用于常用谷歌账户的设备和网络情况下无法使用手机或辅助邮箱验证码进行密码找回特殊找回方法注意;适用于1.新的设备以及网络环境(包括由于非正常原因导致设备系统以及应用信息变更)2.没有开启辅助验证(手机/邮箱)3.知道账号密码但无法登录或找回。通过申诉进行找回 普通找回 注意:适用于 常用谷歌账户的设备和网络情况下 无法使用手机或辅助邮箱验证码进行密码找回 通过恢复页面进行恢复 https://accounts.google

极客代码-极致生活 23万+

poj 2413 大数模拟(区间内的斐波那契数个数)

题意:给定两个数a 思路:数组模拟枚举出100位以内的斐波那契数,然后写一个比较函数进行比较即可。其中一个地方让我wa了n次:temp = f[i-2][j]+f[i-1][j]+f[i][j];写成了temp = f[i-2][j]+f[i-1][j];快哭了~~~ #include #include #define N 155 int f[1000][N]; char a[N],b[N

dearmango 619

保姆级教程:2026版Windows电脑换新,微信QQ聊天记录无损搬家(附路径修改避坑指南)

本文提供2026版Windows电脑换新时微信QQ聊天记录无损迁移的保姆级教程,涵盖最新版微信/QQ的存储路径修改和避坑指南。通过详细步骤和实战技巧,确保数据迁移过程中不丢失任何珍贵对话记录和文件,特别适合需要保留完整聊天记录的用户。

weixin_42629815的博客 2478

POJ 2413 How many Fibs? 笔记

已知a,b。求区间[a,b]之间的斐波那契数个数。 

woniupengpeng的专栏 304

红外小目标检测新思路:当DETR遇上Mamba状态空间模型,速度提升3倍

本文探讨了将Mamba状态空间模型与DETR框架结合,用于解决红外小目标检测的难题。该创新方案通过线性复杂度的Mamba模块替代传统Transformer的自注意力机制,在保持高检测精度的同时,显著提升了推理速度,实现了实时性能的突破,为无人机巡检、安防监控等场景提供了高效解决方案。

hhh00的博客 664

Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

经典论文Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的学习与编程仿真,提供源码

m0_59701926的博客 1238

http://poj.org/problem?id=2413

How many Fibs? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10543   Accepted: 3910 Description Recall the definition of the Fibonacci numbers:  f1 := 1

yishenpingan的专栏 900

剪映专业版关键帧完全教程:从原理到实战的动画必修课

关键帧是视频动画的核心原理。视频由连续静止画面(帧)构成,关键帧记录素材属性变化的起始与结束状态,中间过渡帧由软件自动计算生成。剪映专业版中,视频、音频、文本、贴纸等素材均支持关键帧动画,可调节位置、缩放、旋转、不透明度、音量等参数。操作为:在起始位置点击参数旁菱形按钮添加关键帧,移动播放头后调整参数,系统自动生成第二个关键帧。多属性可独立控制并叠加,实现放大同时淡出等复合效果。通过设定变化起点与终点,关键帧能让静止元素产生移动、缩放、淡入淡出等丰富动态,是视频剪辑从基础拼接进阶创意表达的核心技能。掌握关键

深耕计算机专业知识与技术。 2088

poj 2413 高精度加高精度

问题本身比较简单,写个高精加就行。提交忘记删文件操作,却显示超时,郁闷。 #include #include #include #include using namespace std; #define N 500 #define M 100 int fib[N+5][M+5],len[N+5],sum; int a[M+5],b[M+5],la,lb; char s[M+5]; v

watermelon的专栏 606

5. SAP UI5 视图控制器(Controller)初探

本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4595

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 237

POJ2413 How many Fibs?【高精度】【二分】

题目大意: 定义fibonacci数列前两项f[1] = 1,f[2] = 2。现在给你一个区间[a,b],a <= b <= 10^100。 问:区间[a,b]之间有多少个fibonacci数。 思路: a、b的规模很大,是个100位10进制的数。所以要用数组模拟大整数加法求fibonacci数列。用整型 二维数组F[i][]表示第i个fibonacci数,因为从个位倒着存入数组方便进位,所以F[i][]数组中的数是倒 着的。第480个fibonacci数是101位,先求出前480个fibonacci数

程序员充电站(itcharge) 1485

【ARMv8 异常模型入门及渐进7 - GIC及安全中断介绍】

GIC-v3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

CodingCos的博客 2116

POJ 2413 : How many Fibs? - JAVA大数! / 二分查找+大数加法

给出两个数a,b (a  大数! PS:大数没有a==b这种形式,要用a.compareTo(b),返回1,0,-1 坑:这里的斐波那契数列是以 1 2 3 5 8开始,不是 1 1 2 3 5 8 import java.util.*; import java.text.*; import java.math.*; public class Main {

Booky的专栏 803

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

POJ 2413 How many Fibs?

How many Fibs? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10081   Accepted: 3733 Description Recall the definition of the Fibona

公众号:ByteCode 921

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

UVa 10183/EOJ 1297/POJ 2413/HDU 1316/ZOJ 1962 How many Fibs?【Java大整数类应用】

https://cn.vjudge.net/problem/UVA-10183 题目没难度,C++写法需要高精度,这里练习使用Java的BigInteger类,毕竟刚学…… Java的语法真是冗长…… import java.util.*; import java.math.*; public class Main { public static void main(String ...

Mercury 280

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

poj 2413 How many Fibs?

How many Fibs? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10748   Accepted: 3982 Description Recall the definition of the Fibonacci numbers:  f1 := 1

Jinbao 1175

HDU 1316 How Many Fibs? (大Fib数,还是Java大法好)

How Many Fibs? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5822    Accepted Submission(s): 2267 Problem Description Recall the

AC_Dreameng 5546

poj 2413 高精度加法,裴波拉契,判断范围

妈蛋,我是怀着悲痛的心情来写这篇文章的,这篇文章我花了一个xia

leo_cuiyiming的专栏 581

二分查找各种情况大总结

二分查找多次刷题时遇到,虽然每次也能写对,但花了蛮多时间,没好好想过。而且网上的太多版本,并不是很简洁,而且边界条件变化情况太多,容易混淆,下面是自己对二分查找的一些思考和总结,尽量写得简单易懂。 三种基本版本: 1.1 二分查找原始版--查找某个数的下标(任意一个) 在有序数组中查找某个数,找到返回数的下标,存在多个返回任意一个即可,没有返回-1。所有程序采用左右均为闭区间。典型代

yefengzhichen的博客 3万+

02 Fibonacci Numbers

Fibonacci Numbers In Fibonacci’s best known book, Liber Abaci, published in 1202, he posed the following problem: A man put a pair of rabbits in a place surrounded on all sides by a wall.How many pai...

The_last_knight的博客 540

POJ2413二分

注意二分, 上界。import java.beans.beancontext.BeanContext; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter;

老李2009 440

POJ 2413(DP)

题意:蜜蜂在蜂巢(由六边形拼成的平面)里移动一定步数,求路径数(走法不同的相同认为是不同路径) 要点:由于路径可以重叠,即(x,y)是由四周六个方位移动而来,这可以确定状态;而步数的统计可以由层数代替,从而确定阶段,转移方程则是 dp[t][i][j]=dp[t-1][i-1][j]+dp[t-1][i-1][j-1]+dp[t-1][i][j+1]+dp[t-1][i][j-1]+dp[t-

sisaku的博客 438

poj2413

[code="java"][code="java"]package easy; import java.io.BufferedInputStream; import java.math.BigInteger; import java.util.Scanner; /** * * poj2413 * @author NC */ public class Poj24...

nc200830740306的专栏 221

POJ 2413 How many Fibs?(高精度暴力)

How many Fibs?Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 12308Accepted: 4404DescriptionRecall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n>=3)

Ephemeral 404
上一篇: 二分法+高精度——Poj 2109 Power of Cryptography(double型开n次方的方法通过的原因)
下一篇: 回溯法——Ural 1073 Square Country
庞老板
博客等级 码龄15年 127粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值