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

谁能帮帮我看看程序哪里错了

Posted by hou_fang_ at 2010-10-09 16:38:10 on Problem 2413
#include<stdio.h>
#include<string.h>
int num[110];
char a[110],b[110];
int n,m;
int init()
{
     char ch;
     memset(a,0,sizeof(a));
     memset(b,0,sizeof(b));
     n=1;
     while(1)
     {
          scanf("%c",&ch);
          if(ch!=' ')
		  {
              a[n]=ch;        
              n++;
          }
          else break;
     }
        
		m=1;
     while(1)
     {
          scanf("%c",&ch);
          if(ch!='\n')
		  {
              b[m]=ch;        
              m++;
          }
          else break;
     }
     n--;
     m--;
	if(n==1&&m==1&&a[n]=='0'&&b[m]=='0')
	return 0;
	return 1;
}
int comp(int s[])
{
    int i;
    if(s[0]==n)
    {
      for(i=s[0];i>=1;i--)
      {
       if(s[i]>(a[n-i+1]-'0')) break;
       if(s[i]<(a[n-i+1]-'0')) return 0;
      }
    }
    if(s[0]==m)
    {
       for(i=s[0];i>=1;i--)
       {
           if(s[i]<(b[m-i+1]-'0')) break;
           if(s[i]>(b[m-i+1]-'0')) return 0;
       }
    }
    return 1;
}
int cal()
{
     int fi1[110],fi2[110],fi3[110];
     int i,judge,max,number=0;
     memset(fi1,0,sizeof(fi1));
     memset(fi2,0,sizeof(fi2));
     memset(fi3,0,sizeof(fi3));
     fi1[0]=1;
     fi2[0]=1;
     fi1[1]=1;
     fi2[1]=2;
     if(n==1)
     number+=(comp(fi1)+comp(fi2));
     while(1)
     {
        max=fi2[0];
        for(i=1;i<=max;i++)
        {
           fi3[i+1]+=(fi1[i]+fi2[i])/10;
           fi3[i]+=(fi1[i]+fi2[i])%10;
        }
        if(fi3[max+1]==1)
        fi3[0]=max+1;
        else
        fi3[0]=max;
     
        if(fi3[0]>m)
        return number;
     
        if(fi3[0]>=n&&fi3[0]<=m)
        {
           judge=comp(fi3);
           number+=judge;
        }
        memcpy(fi1, fi2, sizeof(fi1));
        memcpy(fi2, fi3, sizeof(fi2));
        memset(fi3,0,sizeof(fi3));
     }
}
int main()
{
	int i,j;
    i=1;
	while(1)
	{
		j=init();
		if(j==0) break;
		num[i]=cal();
		i++;
	}
	for(j=1;j<i;j++)
    printf("%d\n",num[j]);

}

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