HDOJ 1316
クリックしてリンクを開く
まず時計を打って、それから比較して、比較的に気持ちが悪くて、compareで8 12を比較すると8>12があることに注意して、比較関数に注意します
テストデータ:
input:
ouput :
コード:
まず時計を打って、それから比較して、比較的に気持ちが悪くて、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;
}