数学题:

给你一个区间[a,b]在该区间内有多少个费波那列数(包括a,b),数据规模达到10^100。

这题的原理很简单,基本没什么算法,其实更偏重于编程能力,需要用到高精度。另外找区间的地方要小心

1.先把长度在100以内的fibs先找出来并保存,再开始输入case

2.得到区间[a,b],那么在保存下来的fibs里找到  第一个f[p],要满足a<=f[p] , 然后继续找下去,找到  第一个f[q],满足b<=f[q]

其中f[q]还要处理一下,如果b=f[q],那么f[q]显然在区间内 ; b<f[q],那说明f[q]并不在区间内,由于是第一个所以可以知道f[q-1]一定要区间内而且f[q-1]<b , 处理后就可以得到准确的q值

最后答案就是q-p+1

代码又写得不好,最近脑袋比较乱写出来的代码都很乱

//构建10^100以内的fibs数
#include <cstdio>
#include <cstring>
#define LEN 150
#define MAX 510
struct fibs
{int a[LEN],len;
}f[MAX];int find(struct fibs x ,struct fibs y)
{//当x<y为1,x>y为-1,相等为0if(x.len < y.len)      return 1;else if(x.len > y.len) return -1;int i=x.len-1 , j=y.len-1;while(i>=0){if(x.a[i] < y.a[j]) return 1;else if(x.a[i] > y.a[j])  return -1;i--; j--;}return 0;
}
void add(int x ,int y ,int m)  //f[x]>f[y]
{int t,c=0;for(int i=0; i<f[x].len; i++){t=f[x].a[i]+f[y].a[i]+c;f[m].a[i]=t%10;c=t/10;}f[m].len=f[x].len;if(c){f[m].a[f[m].len]=c;f[m].len++;}return ;
}
void init()
{memset(f,0,sizeof(f[0]));f[1].a[0]=1;  f[1].len=1;f[2].a[0]=2;  f[2].len=1;int i=3;do{add(i-1,i-2,i);if(f[i].len>=101) break;i++;}while(1);//printf("count=%d  len=%d\n",i,f[i].len);return ;
}
int main()
{init();char s1[LEN],s2[LEN];struct fibs a,b;while(scanf("%s%s",s1,s2)!=EOF){if(!strcmp(s1,"0") && !strcmp(s2,"0")) break;a.len=strlen(s1);  b.len=strlen(s2);int i,j,p,q,t;for(i=0,j=a.len-1; i<a.len; i++,j--)a.a[j]=s1[i]-'0';for(i=0,j=b.len-1; i<b.len; i++,j--)b.a[j]=s2[i]-'0';//for(i=0; i<a.len; i++) printf("%d",a.a[i]); printf("\n");//for(i=0; i<b.len; i++) printf("%d",b.a[i]); printf("\n");
 i=1;while(1){    t=find(a,f[i]);if(t==1 || t==0) break;i++;}p=i;while(1){t=find(b,f[i]);if(t==1 || t==0) break;i++;}if(t==1) q=i-1;else     q=i;//printf("p=%d   q=%d\n",p,q);//for(int i=f[p].len-1; i>=0; i--) printf("%d",f[p].a[i]); printf("\n");//for(int i=f[q].len-1; i>=0; i--) printf("%d",f[q].a[i]); printf("\n");printf("%d\n",q-p+1);}return 0 ;
}

转载于:https://www.cnblogs.com/scau20110726/archive/2013/01/22/2872273.html

uva 10183 How many Fibs?相关推荐

  1. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  2. π-Algorithmist分类题目(2)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(2) Set Theory U ...

  3. π-Algorithmist分类题目(1)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...

  4. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  5. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  6. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  7. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  8. ACMer Training 学习指导

    本文原地址 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> ...

  9. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

最新文章

  1. MySQL安装使用的2个问题
  2. Oracle Goldengate OGG 11g与各操作系统及数据库版本的兼容列表
  3. 做一个成功的网络项目的详细推广流程
  4. linux删除非空目录
  5. c#开发中遇到System.AccessViolationException
  6. RISC-V,芯片中的网红战斗机,究竟是个什么鬼
  7. POJ 1276 完全背包
  8. python3 threading.lock_Python3 threading
  9. 蓝桥杯 ADV-221 算法提高 7-1用宏求球的体积
  10. 详解SQL Server Profiler分析死锁几大步骤
  11. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_4 HiddentHttpMethodFilter过滤器
  12. 一步一步学Repast 第四章——分析SimpleModel
  13. 单片机c语言1ms程序,51单片机c语言延时函数 Void delay 1ms(unsigned int ms){un
  14. Foxit PDF SDK for Linux (C++ Library) 8.4.1 Crack
  15. Arduino字符串操作函数
  16. Nginx 安装与部署配置以及Nginx和uWSGI开机自启
  17. python使用while循环语句计算GDP
  18. 情人节程序员用HTML网页表白【3D旋转木马相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  19. python小游戏毕设 俄罗斯方块小游戏设计与实现 (源码)
  20. Linux基础笔记11 | 链接文件详解

热门文章

  1. 仿qq左滑删除listview_Java基于Swing和Netty仿QQ界面聊天小项目
  2. Java学习总结:31(StringBuffer类)
  3. Java项目:网上商城系统(java+jsp+servlert+mysql+ajax)
  4. seal report mysql_Seal Report开放数据库报表工具(.Net)
  5. 小程序输入框导致界面上移,在输入的时候固定住页面的解决代码
  6. 从 Java 到 Scala(二):object
  7. Html-Css 从入门到放弃(一)基础知识
  8. Oracle 变量绑定与变量窥视合集系列二
  9. 使用VB.NET加快代码开发速度
  10. 如何查看 oracle 官方文档