hdu1316
pid=1316" target="_blank">点击打开链接
题意:问区间[a,b]中有多少斐波那契数
代码:
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- #define N 10000
- #define M 300
- char str[N][M];
- int cmp(char *a,char *b){
- int len1,len2;
- len1=strlen(a);
- len2=strlen(b);
- if(len1>len2)
- return 1;
- if(len1<len2)
- return -1;
- if(len1==len2){
- if(strcmp(a,b)==0)
- return 0;
- else if(strcmp(a,b)>0)
- return 1;
- else if(strcmp(a,b)<0)
- return -1;
- }
- } //由于斐波那契不是依照字符顺序排序,因此自写一个cmp函数
- void overthrow(char *s){
- int i,j;
- i=M-1;
- while(s[i]=='0')
- i--;
- s[i+1]='\0';
- for(j=0;j<=i/2;j++)
- swap(s[j],s[i-j]);
- } //由于是从左右往右加的,所以将高位和地位互换
- void bignumber(){
- long long i,j,t;
- str[1][0]='1';str[2][0]='2';
- for(i=3;i<N;i++){
- t=0;
- for(j=0;j<M;j++){
- t=t+str[i-1][j]-'0'+str[i-2][j]-'0';
- str[i][j]=t%10+'0';
- t/=10;
- }
- }
- } //大数斐波那契,注意是字符想加的时候要-'0'
- int binsearch1(char *s){
- int low,high,mid;
- low=1;high=N;
- while(low<=high){
- mid=(low+high)/2;
- if(cmp(str[mid],s)==0)
- return mid;
- else if(cmp(str[mid],s)>0)
- high=mid-1;
- else if(cmp(str[mid],s)<0)
- low=mid+1;
- }
- return low;
- } //返回比要查找的数较大的数的下标
- int binsearch2(char *s){
- int low,high,mid;
- low=1;high=N;
- while(low<=high){
- mid=(low+high)/2;
- if(cmp(str[mid],s)==0)
- return mid;
- else if(cmp(str[mid],s)>0)
- high=mid-1;
- else if(cmp(str[mid],s)<0)
- low=mid+1;
- }
- return high;
- } //返回比要查找的数较小的数的下标
- int main(){
- char a[305],b[305];
- int i,j,sum;
- for(i=1;i<N;i++)
- for(j=0;j<M;j++)
- str[i][j]='0'; //初始化为字符'0'
- bignumber();
- for(i=1;i<N;i++)
- overthrow(str[i]); //调用完bignumber(),之后翻转每个斐波那契数
- // for(i=1;i<=20;i++)
- // cout<<str[i]<<endl;
- while(cin>>a>>b){
- if(strcmp(a,"0")==0&&strcmp(b,"0")==0)
- break;
- // cout<<binsearch1(a)<<endl;
- // cout<<binsearch2(b)<<endl;
- sum=binsearch2(b)-binsearch1(a)+1; //不要忘记加1
- printf("%d\n",sum);
- }
- return 0;
- }
hdu1316的更多相关文章
- HDU1316(求区间斐波那契数的个数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1316 题意:给两个数a和b,其中它们可能很大,最大到10^100,然后求去区间[a,b]内有多少个fib数 ...
- Java大数统计-hdu1316
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1316 题目描述: 给你一个范围,问你在这个范围内有多少斐波拉契数. 代码实现: import java ...
- (compareTo) How Many Fibs hdu1316 && ZOJ1962
How Many Fibs? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- hdu1316(大数的斐波那契数)
题目信息:求两个大数之间的斐波那契数的个数(C++/JAVA) pid=1316">http://acm.hdu.edu.cn/showproblem.php? pid=1316 这里 ...
- hdu1316 水大数
题意: 给你一个区间,问这个区间有多少个斐波那契数. 思路: 水的大数,可以直接模拟,要是懒可以用JAVA,我模拟的,打表打到1000个就足够用了... #include<s ...
- hdu1316 大数
题意: 给你一个区间,问这个区间有多少个斐波那契数. 思路: 水的大数,可以直接模拟,要是懒可以用JAVA,我模拟的,打表打到1000个就足够用了... #include<s ...
- HDU中大数实现的题目,持续更新(JAVA实现)
HDU1002:大数加法,PE了N次 import java.util.Scanner; import java.math.*; public class Main { public static v ...
- 大数问题,通常用JAVA
e.g. HDU1002 简单加法 import java.math.BigInteger; import java.util.Scanner; public class Main { public ...
随机推荐
- 【03】react 之 创建component
React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归:具体的三种方式: 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的ext ...
- NKOI 1469 通向自由的钥匙
P1469通向自由的钥匙 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 通向自由的钥匙被放n个房间里,这n个房间由n-1条走廊连接.但是每个房间里都有特别的保护魔法,在 ...
- 【UVA11859】Division Game(SG函数,Nim游戏)
题意:给定一个n*m的矩阵,两个游戏者轮流操作. 每次可以选一行中的1个或多个大于1的整数,把它们中的每个数都变成它的某个真因子,不能操作的输. 问先手能否获胜 n,m<=50,2<=a[ ...
- POJ 3090
Visible Lattice Points Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8397 Accepted: ...
- config .net webapi to return json.
1.add content negotiator using System; using System.Collections.Generic; using System.Linq; using Sy ...
- 5种你未必知道的JS和CSS交互的方法
随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合作.我们的网页中都有.js文件和.css ...
- poj 3693 Maximum repetition substring 重复次数最多的连续子串
题目链接 题意 对于任意的字符串,定义它的 重复次数 为:它最多可被划分成的完全相同的子串个数.例如:ababab 的重复次数为3,ababa 的重复次数为1. 现给定一字符串,求它的一个子串,其重复 ...
- 《30天学习30种新技术》-Day 15:Meteor —— 从零开始创建一个 Web 应用
目录:https://segmentfault.com/a/1190000000349384 原文: https://segmentfault.com/a/1190000000361440 到目前为止 ...
- hdu 4524(模拟)
郑厂长系列故事——逃离迷宫 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- LeetCode OJ-- Combination Sum II **
https://oj.leetcode.com/problems/combination-sum-ii/ 一列数,每个数只能用一次或者不用,给出和为target的组合. 递归写的深搜,使用了编程技巧, ...