HDU 1316 大数
来源:互联网 发布:海康网络视频监控方案 编辑:程序博客网 时间:2024/06/06 00:54
打表方法有点特别
对齐方法也不错。
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define M 105char a[M+2], b[M+2];char book[1000][M+2];int cmp(char *s1, char *s2) {for(int i = 0; i <= M; i++) {if(i == M) {return s1[i] - s2[i];}if(s1[i] == s2[i])continue;elsereturn s1[i] - s2[i];}}int find1(int i, char *x) {int low = 0, high = i, mid;while(low <= high) {mid = (low + high) / 2;int t = cmp(book[mid], x);if(t > 0) high = mid - 1;else if(t == 0)return mid - 1;else low = mid + 1;}return high;}int find2(int i,char *x) {int low = 0, high = i, mid;while(low <= high) {mid = (low + high) / 2;int t = cmp(book[mid], x);if(t > 0) high = mid - 1;else if(t == 0)return mid + 1;else low = mid + 1;}return low;}int main(){int p=M,i=2; //p用于标记最高位的位置 book[0][M]=1,book[1][M]=2;while(book[i-1][M-100]<=1){for(int j=M;j>=p;--j)book[i][j]=book[i-1][j]+book[i-2][j];for(int j=M;j>=p;--j){int c=book[i][j]/10;book[i][j]%=10;book[i][j-1]+=c;} //即时进位操作 if(book[i][p-1]>0) //判断是否最高位发生变化 --p;//如果当前的最高位的下一位不为零,则指针减一 ++i; } while(scanf("%s%s",a,b),a[0]-'0'||b[0]-'0'){int cnt=0,p;int last1=strlen(a)-1;int last2=strlen(b)-1;for(int j=last1,k=M;j>=0;--j,--k) //对齐{a[k]=a[j]-'0';a[j]=0; //消除干扰比较的因素,置零操作 } for(int j=last2,k=M;j>=0;--j,--k){ b[k]=b[j]-'0';b[j]=0; } int l=find1(i-1,a); int r=find2(i-1,b); printf("%d\n",r-l-1);memset(a,0,sizeof(a)); //清除上一次操作的数据遗留 memset(b,0,sizeof(b)); } return 0;}
- HDU 1316 大数
- HDU 1316 大数二分
- hdu-1316 大数类模板
- HDU 1316(大数比较+二分)
- hdu 1316 How Many Fibs?【JAVA大数】
- HDU 1316 How Many Fibs? 大数
- hdu 1316 How Many Fibs?(大数,二分)
- HDU-1316 How Many Fibs?(Java大数)
- 【java 大数】hdu java 大数
- HDU 1002 --大数问题
- HDU 1297 (大数)
- hdu 1063 Exponentiation(大数)
- hdu 1002 大数相加
- HDU-1042(大数阶乘)
- hdu 1250 大数Fibonacci
- HDU 1502 dp + 大数
- hdu 1042 大数阶乘
- HDU 1753 大数 strchr
- lucene3.5报错org.apache.lucene.queryParser.ParseException
- 如何更改UIPickerView的高度
- Unity3d之Quaternion 学习与应用
- read_lock()和write_lock()
- 自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
- HDU 1316 大数
- 基于openswan klips的IPsec VPN实现分析(五)应用层和内核通信(2)
- 盈利模式
- 10年+程序人生感悟[2] - 贵在坚持
- 综合练习——俏江南网站之三——如何从一个网页得到网站的其他页面
- 获取安装的应用程序信息
- [MFC]动态控件实现 程序执行流程 [大三TJB_708]
- Oracle 10.2.0.1静默升级至10.2.0.4(Linux)
- LCD Driver Test for Linux2.6.xx+ARM9