博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2413 How many Fibs?(高精度)
阅读量:5244 次
发布时间:2019-06-14

本文共 2008 字,大约阅读时间需要 6 分钟。

复习的好累啊,刷个题。。。题意简单给两个数,找中间有多少个斐波那契数,最大可能有100位。

先预处理出来,大数比较,我用的方法比较搞,以前做UVA的时候想出的一种方法,先判断位数,然后位数相同时,用strcmp函数来判断,因为此函数,可以判断两个字符串的字典序大小,然后注意点找的时候小细节就OK了。。。难得的1Y,话说UVA那个高精度 我还没过啊,UVA上各种坑人啊,如果数据有前导0,此算法悲剧。。。

1 #include 
2 #include
3 int p[601][201],num[601]; 4 char str[601][201]; 5 int main() 6 { 7 int i,j,len1,len2; 8 char a[101],b[101]; 9 p[1][0] = 1;p[2][0] = 2;10 num[1] = num[2] = 0;11 for(i = 3;i <= 500;i ++)12 {13 num[i] = num[i-1];14 for(j = 0;j <= num[i];j ++)15 {16 p[i][j] = p[i-1][j] + p[i-2][j];17 }18 for(j = 0;j <= num[i];j ++)19 {20 if(p[i][j] > 9)21 {22 p[i][j+1] += p[i][j]/10;23 p[i][j] = p[i][j]%10;24 if(j+1>num[i])25 num[i] = j + 1;26 }27 }28 }29 for(i = 1;i <= 500;i ++)30 {31 for(j = 0;j <= num[i];j ++)32 {33 str[i][num[i]-j] = p[i][j] + '0';34 }35 str[i][num[i]+1] = '\0';36 }37 while(scanf("%s%s",a,b)!=EOF)38 {39 if(a[0] == '0'&&b[0] == '0')40 break;41 len1 = strlen(a) - 1;42 len2 = strlen(b) - 1;43 for(i = 1;;i ++)44 {45 if(num[i] >= len1)46 {47 if(num[i] == len1)48 {49 if(strcmp(str[i],a)>=0)50 break;51 }52 else53 break;54 }55 }56 for(j = i;;j ++)57 {58 if(num[j] >= len2)59 {60 if(num[j] == len2)61 {62 if(strcmp(str[j],b)>0)63 break;64 }65 else66 break;67 }68 }69 printf("%d\n",j-i);70 }71 return 0;72 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/06/18/2554031.html

你可能感兴趣的文章
eatwhatApp开发实战(八)
查看>>
dubbo-springMVC-idea-mac开发环境搭建part2-dubbadmin安装配置
查看>>
夫战,勇气也
查看>>
利用jar -cvf *.jar * 和直接islibrary 然后生成的jar包比较(Android中jar包封装及调用)...
查看>>
一个3D游戏DEMO, 同步教程更新
查看>>
bootstrap基础学习三篇
查看>>
MSIL实用指南-装箱拆箱
查看>>
一致性hash理解
查看>>
线程睡眠
查看>>
Kindle fire 刷机
查看>>
《CSS3使用指南》读书笔记
查看>>
创建一个简单的带事务的存储过程
查看>>
我写的DBHelp
查看>>
HDU2544 最短路(floyd)
查看>>
数据库连接池
查看>>
ble学习笔记四---------------------控制lcd
查看>>
kali自定义分辨率(1920*1080)
查看>>
HDU4054_Hexadecimal View
查看>>
网页css效果调试技巧
查看>>
Python【第三课】 函数基础
查看>>