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

[1001]这个测试数据全都过了,结果还是WA了

Posted by delguoqing at 2007-10-10 19:54:06
#include <iostream>
#include <math.h>

using namespace std;

int nlen,tlen;

int getintlen(char *R)
{
    int i=0;
    if(*R=='0')return 0;
    while(*R!='.')
    {
                    R++;
                    i++;    
    }
    return i;
}

int getdecimal(char *R)
{
    int i=0,flag=0,extra0=0,flag2=0,oridecimal=0;
    while(*R!='\0')
    {
                  if(*R=='0')
                   {
                            if(flag)extra0++;
                            else {flag=1;extra0=1;}
                   }
                   else
                   {
                       extra0=0;
                       flag=0;
                   }
                   if(flag2)oridecimal++;
                   if(*R=='.'){flag2=1;}
                   R++;
    } 
    return oridecimal-extra0;
}

int getr(char *R)
{
    int r;
    while(*R!='\0')
    {
          r=r*10+*R-'0';
          R++;         
    }
    return r;
}

int Plus(int *c,int *b,int cuowei)
{
    int i,j=0;
    int flag=0;
    for(i=1;i<=cuowei;i++)
     {c++;j++;}
    if(tlen+cuowei>nlen){nlen=tlen+cuowei;}
    while(j<nlen)
    {
                  *c=*c+*b+flag;
                  if(*c>=10)
                  {
                            flag=1;
                            *c-=10;
                  }
                  else
                  {
                      flag=0;
                  }
                  if((flag)&&(j==nlen-1))
                  {
                                  nlen++;
                  }
                  j++;
                  c++;
                  b++;
    }
} 

int main()
{
    char *R=new char[6];int n;
    int *a,*b,*c;
    int intlen,decimallen,len;
    int i,j,k,t;
    int r=0;
    double temp;
    while(cin>>R>>n)
    {
    intlen=getintlen(R);
    decimallen=getdecimal(R);

    nlen=tlen=len=intlen+decimallen;

    temp=atof(R)*(pow(10,decimallen));
    r=int(temp);

    a=new int[len];
    b=new int[len*n];
    c=new int[len*n];
    memset(a,0,sizeof(int)*len);
    memset(b,0,sizeof(int)*len*n);
    memset(c,0,sizeof(int)*len*n);
    for(i=0;i<len;i++)
    {
                     a[i]=b[i]=c[i]=r%10;
                     r=r/10; 
    }

    for(i=0;i<n-1;i++)
    {
                      for(j=0;j<len;j++)
                      {
                                        if(j==0){t=a[j]-1;}else{t=a[j];}
                                        for(k=0;k<t;k++)
                                        {
                                                           Plus(c,b,j);
                                        }
                      }
                      tlen=nlen;
                      for(k=0;k<nlen;k++)
                      {b[k]=c[k];}                    
    } 
    for(i=nlen-1;i>=(len-intlen)*n;i--)
     cout<<c[i];
    cout<<".";
    for(i=(len-intlen)*n-1;i>=0;i--)
     cout<<c[i];
    cout<<"\n";
    delete []a;
    delete []b;
    delete []c;
   }
}
刚来的,不是很懂

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