Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

2413 什么BT的数据都测试了都没问题。。可就是过不了。。。哪位大牛来瞧两眼。。很简单的一道题。。

Posted by hhhcccbbb at 2007-07-20 22:45:52
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator