| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
2413 什么BT的数据都测试了都没问题。。可就是过不了。。。哪位大牛来瞧两眼。。很简单的一道题。。#include<iostream>
using namespace std;
short c[100001][110];
void add(short *a,short *b,short *c)
{ // c=a+b;
int m,n,i,j,k;
m=a[0]; n=b[0];
if(m<n)k=n; else k=m;
for(i=0;i<=k;i++) c[i]=0;
j=k;
for(i=n;i>=1;i--,j--) c[j]=b[i];
j=k;
for(i=m;i>=1;i--,j--) c[j]+=a[i];
for(i=k;i>=1;i--)
{ if(c[i]>9) { c[i-1]++; c[i]-=10; }
}
if(c[0])
{k++; for(i=k;i>=1;i--) c[i]=c[i-1]; }
c[0]=k;
}
void dectoB(int sum,int b,short *S)
{ //将数sum用数组表示(b进制)
int i,j,k=0,d[20];
while(sum>0) { d[++k]=sum%b; sum/=b; }
S[0]=k;
for(i=1,j=k;i<=k;i++,j--) {S[i]=d[j];}
}
int comp(short a[],short b[])
{
int la,lb,i;
la=a[0];lb=b[0];
if(la>lb) return 1;
else if(la<lb) return 3;
else
{
for(i=1;i<=la;i++)
if(a[i]>b[i])
return 1;
else if(a[i]<b[i])
return 3;
if(i>la)
return 2;
}
}
int main()
{
short a[110],b[110];
char d[110],e[110];
int ld,le,i,count;
while(cin>>d>>e&&!(d[0]=='0'&&e[0]=='0'))
{
count=0;
ld=strlen(d);
le=strlen(e);
for(i=0;i<ld;i++)
a[i+1]=d[i]-'0';
for(i=0;i<le;i++)
b[i+1]=e[i]-'0';
a[0]=ld;b[0]=le;
if(comp(a,b)==1)
{cout<<0<<endl;continue;}
dectoB(1,10,c[1]);
dectoB(1,10,c[2]);
if(comp(a,c[1])==2||comp(a,c[1])==3)
count++;
for(i=3;i<100001;i++)
{
add(c[i-1],c[i-2],c[i]);
if(comp(c[i],b)==1)
break;
if(comp(c[i],b)==2)
{count++;break;}
if(comp(c[i],a)==1)
count++;
}
cout<<count<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator