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

怎么不能AC,测试数据都真确

Posted by jackch at 2006-09-11 16:44:54 on Problem 1001
#include<iostream>
#include<math.h>
using namespace std;
int W,D,O;
int num(int a,int n);
int * init(int a,int size);
void cal(int *pa,int a,int n);
void display(int *pa,int size,int n);
int main()
{
    int n;
    char b[7];
    int a;
    while(cin>>b>>n)
    {
                    a=0;D=0;W=0;O=0;
                    char *p=b;
                    while(*p!='.')
                    {a=a*10+*p-48;p++;}
                     char *q=p;
                     while(*p!='\0')
                     p++ ;
                     p--;
                     while(*p=='0')
                     {p--;}
                     *(p+1)='\0';q++;
                     while(*q!='\0')
                     {a=a*10+*q-48;q++;D++;}
                                           
                    int size=num(a,n)+1;  
                    int *pa=init(a,size);
                    cal(pa,a,n);       
                    display(pa,size,n);
                    delete []pa;
    }
    getchar();
    return 0;
}
int num(int a,int n)
{
    double sum=1.0;
    sum=n*log10(a);
    return (int)sum;
}
int * init(int a,int size)
{
     int*pa=new int[size];
     int i=0;
     while(a>0)
     {pa[i++]=a%10;a/=10;W++;}
     for(int j=i;j<size;j++)
     pa[j]=0;
     return pa;
}
void cal(int *pa,int a,int n)
{
     double end=W;
     int begin=0;
     for(int i=2;i<=n;i++)
     {
             long add=0;
             
             end+=log10(a);
             for(int i=begin;i<=int(end);i++)
             {
                     add+=a*pa[i];
                     pa[i]=add%10;
                     add/=10;
             }
     }
}
void display(int *pa,int size,int n)
{
     if(n*D>size)
     {
                  cout<<'.';
                  for(int i=0;i<n*D-size;i++)
                  cout<<0;
                  for(int i=size-1;i>=O;i--)
                  cout<<pa[i];
                  cout<<endl;
     }
     else
     {
         for(int i=0;i<size;i++)
         if(pa[i]==0)
         O++;
         else break;
         for(int i=size-1;i>=n*D;i--)
         cout<<pa[i];
         cout<<'.';
         for(int i=n*D-1;i>=O;i--)
         cout<<pa[i];
         cout<<endl;
     }
     
}
         
         
         
         
         
     









     
     
     
     
     
     

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