点击打开链接
首先打表,然后就是比较了,比较恶心了一点,注意用compare比较 8 12会有 8>12,注意一下比较函数
测试数据:
input:
83 346930886
77 214636915
93 424238335
86 149760492
49 189641421
62 350490027
ouput :
32
31
31
30
32
32
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
int s[501][110];
char str1[110] , str2[110];
char tem[501][110] = {'0'};
void Plus()
{
int i , j , k , count;
memset(s,0,sizeof(s));
s[1][0] = 1;
s[2][0] = 2;
for(i = 3;i <= 501;i++)
{
for(j = 0;j <= 105;j++)
{
s[i][j] += s[i-1][j]+s[i-2][j];
if(s[i][j] >= 10)
{
s[i][j+1] += s[i][j]/10;
s[i][j] %= 10;
}
}
}
for(i = 1;i <= 500;i++)
{
j = 105;
while(j--)
{
if(s[i][j] != 0)
{
break;
}
}
for(k = 0;j >= 0;j--,k++)
{
char ch = s[i][j] + 48;
tem[i][k] = ch;
}
}
}
void cmp()
{
int i , j , count , mark;
int l1 , l2;
l1 = strlen(str1);
l2 = strlen(str2);
for(i = 1;i <= 500;i++)
{
int len = strlen(tem[i]);
if(l1 < len|| (l1 == len && strcmp(str1,tem[i])<=0))//这里判断左边界限
{
mark = i;
break;
}
}
count = mark;
for(i = mark;i <= 500;i++)
{
int len = strlen(tem[i]);
if(l2 < len||(l2 == len && strcmp(str2,tem[i])<0))//这里判断右边界限
{
mark = i;
break;
}
}
cout<<mark-count<<endl;
}
int main()
{
int i , j;
Plus();
while(1)
{
cin>>str1>>str2;
if(strcmp(str1,"0") == 0 && strcmp(str2,"0") == 0)
break;
else
{
cmp();
}
}
return 0;
}
分享到:
相关推荐
HDOJ题目分类HDOJ题目分类HDOJ题目分类
hdoj1001标程
ACM ICPC HDOJ1002
hdoj上的资源,代码有注释,很不错的哦
ACM ICPC HDOJ1001
hdoj1004,解题代码,答案代码,欢迎下载
ACM ICPC HDOJ1003
杭州电子科技大学hdoj1002,大整数相加问题
ACM ICPC HDOJ1008
杭州电子科大HDOJ
c语言 最短路 是hdoj上的一个最短路问题,写的很牛
一些HDOJ上的DP题目的小总结,但愿能帮到那些想专攻DP的人吧
ACM ICPC HDOJ1000
hdoj解题代码,题目为1000-1050
codj,hdoj的源码(50-60题)
HDOJ 源代码 包含几百道HDOJ题目源码
hdoj 2013 多校训练3标程+解题报告
hdoj1005 Number Sequence, 杭州电子科技大学oj题目代码
杭电OJ(1000-1099) AC 代码
HDOJ使用指南——公开版.docHDOJ使用指南——公开版.docHDOJ使用指南——公开版.doc