hdu1316 大数
题意:
给你一个区间,问这个区间有多少个斐波那契数.
思路:
水的大数,可以直接模拟,要是懒可以用JAVA,我模拟的,打表打到1000个就足够用了...
#include<stdio.h>
#include<string.h>
int a[110] ,b[110];
int num[1200][110]; void csh_num()
{
memset(num ,0 ,sizeof(num));
num[1][1] = 1 ,num[1][0] = 1;
num[2][1] = 2 ,num[2][0] = 1;
for(int i = 3 ;i <= 1000 ;i ++)
{
for(int j = 1 ;j <= 105 ;j ++)
num[i][j] = num[i-1][j] + num[i-2][j];
for(int j = 1 ;j <= 105 ;j ++)
{
num[i][j+1] += num[i][j] / 10;
num[i][j] %= 10;
}
} for(int i = 3 ;i <= 1000 ;i ++)
{
int kg = 0 ,sum = 0;
for(int j = 105 ;j >= 1 ;j --)
{
if(num[i][j]) kg = 1;
if(kg) num[i][0]++;
}
}
return ;
} bool campa(int i ,int la)
{
if(num[i][0] > la) return 1;
if(num[i][0] < la) return 0;
for(int ii = la ;ii >= 1 ;ii --)
{
if(num[i][ii] == a[ii]) continue;
if(num[i][ii] > a[ii]) return 1;
else return 0;
}
return 1;
} bool campb(int i ,int lb)
{
if(num[i][0] > lb) return 0;
if(num[i][0] < lb) return 1;
for(int ii = lb ;ii >= 1 ;ii --)
{
if(num[i][ii] == b[ii]) continue;
if(num[i][ii] > b[ii]) return 0;
else return 1;
}
return 1;
} int main ()
{
csh_num();
int i ,j ,sum;
char stra[105] ,strb[105];
while(~scanf("%s %s" ,stra ,strb) && strcmp(stra ,"0") + strcmp(strb ,"0"))
{
memset(a ,0 ,sizeof(a));
int la = strlen(stra) - 1;
int tt = 0;
for(i = la ;i >= 0 ;i --)
a[++tt] = stra[i] - 48; memset(b ,0 ,sizeof(b));
int lb = strlen(strb) - 1;
tt = 0;
for(i = lb ;i >= 0 ;i --)
b[++tt] = strb[i] - 48;
la++ ,lb++; sum = 0;
for(i = 1 ;i <= 1000 ;i ++)
{
if(!campb(i ,lb)) break;
if(campa(i ,la)) sum ++;
} printf("%d\n" ,sum);
}
return 0;
}
hdu1316 大数的更多相关文章
- hdu1316(大数的斐波那契数)
题目信息:求两个大数之间的斐波那契数的个数(C++/JAVA) pid=1316">http://acm.hdu.edu.cn/showproblem.php? pid=1316 这里 ...
- Java大数统计-hdu1316
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1316 题目描述: 给你一个范围,问你在这个范围内有多少斐波拉契数. 代码实现: import java ...
- 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 ...
- BZOJ 3110: [Zjoi2013]K大数查询 [树套树]
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6050 Solved: 2007[Submit][Sta ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
- c语言经典算法——查找一个整数数组中第二大数
题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...
- 杨氏矩阵:查找x是否在矩阵中,第K大数
参考:http://xudacheng06.blog.163.com/blog/static/4894143320127891610158/ 杨氏矩阵(Young Tableau)是一个很奇妙的数据结 ...
随机推荐
- .NET Core Generic Host项目使用Topshelf部署为Windows服务
1..NET Core Generic Host是什么? 在.NET Core 2.1版本加入了一种新的Host,即Generic Host(通用主机). 现在在2.1版本的Asp.Net Core中 ...
- Javascript学习,DOM对象,方法的使用
JavaScript: ECMAScript: BOM: DOM: 事件 DOM的简单学习 功能:控制html文档内容 代码:获取页面标签(元素)对象和Element document.getElem ...
- const修饰符相关
const修饰符相关 const修饰符表明一个变量是常量,大致分为三类:常量数组(等同于常量指针),常量指针,指向常量的指针. 常量数组中数据都是不可修改的,任何试图修改常量数组中的数据的操作都会报错 ...
- cpu缓存和volatile
目录 CPU缓存的由来 CPU缓存的概念 CPU缓存的意义 缓存一致性协议-MESI协议 Store Buffers Store Forwarding Memory Barriers Invalida ...
- 为什么要从 Linux 迁移到 BSD 4
为什么要从 Linux 迁移到 BSD 4 许可证问题 Linux GPL 许可证对开发者的要求比较严格,它是一种开源的反模式,因为它强制发布所有修改过的源代码,并且阻止其他开源项目的集成,例如 GP ...
- C语言float和double输入问题
统计给定的n个数中,负数.零和正数的个数. Input 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数:如果n=0,则表示输入结 ...
- JAVA常用的集合转换
在Java应用中进行集合对象间的转换是非常常见的事情,有时候在处理某些任务时选择一种好的数据结构往往会起到事半功倍的作用,因此熟悉每种数据结构并知道其特点对于程序员来说是非常重要的,而只知道这些是不够 ...
- gtk+2.0中函数set_widget_font_size()函数在编译时未定义的解决办法
自己写一个头文件即可,代码如下: 在.c文件中包含该头文件即可
- spring-boot记录sql探索
目标记录每次请求内的http.es.mysql耗时,本篇讨论mysql部分 为什么说要探索,这不是很简单的事么?但是能满足以下几点么? 能记录limit等参数 能将参数和sql写一起,能直接使用 能记 ...
- filecoin今日价格,filecoin币价估值,filecoin币会涨到多少钱
filecoin今日价格,截止 2021 年 3 月 17 日 9 时,filecoin价格为 63.8939 美元,约合人民币 415.69 元.流通市值约 416.2 亿人民币,总市值达到 831 ...