| ||||||||||
| 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 | |||||||||
等你交够60次再问吧!!!!In Reply To:求救!!!所有数据都测试过了,还是不行啊!!! Posted by:caison at 2006-04-11 18:26:28 > #include<iostream>
> #include<string>
> #define N 500
> using namespace std;
> int c[N]={0};
> int Length(int a[]);
> void Mul(int a[],int b[]);
> int main()
> {
> string R,s="99.999",t="0.0",p=".0";
> int n , m , i ,j , point=0 , h=0;
> cin>>R>>n;
> for(i=R.length()-1;i>=0;i--)//判断是否有小数点
> {
> if(R.at(i)=='.')
> {
> for(i=R.length()-1;i>=0;i--)
> {
> if(R.at(i)!='0')
> {
> i++;
> R=R.substr(0,i);
> break;
> }
> }
> h=1;//h=1说明有小数点
> break;
> }
> }
> int length=R.length();
> int a[N]={0},b[N]={0};
> for(i=0,j=length-1-h;i<length;i++,j--)//把R去小数点存入 a;
> {
> if (R.at(i)=='.')
> {
> point=i+1;
> j++;
> }
> else a[j]=b[j]=R.at(i)-48;
> }
> if(h==1) point=length-point;
> else point=0;
> m=n-1;
> while(m)
> {
> Mul(a,b);
> for(i=Length(c)-1;i>=0;i--)//将a*b=c赋给b
> {
> b[i]=c[i];
> c[i]=0;
> }
> m--;
> }
> if(Length(b)<point*n)//判断结果的位数是否大于小数点的位数不足补0
> {
> cout<<'.';
> for(i=point*n;i>Length(b);i--)
> cout<<0;
> }
> for(i=Length(b)-1;i>=0;i--)
> {
> if(i==(point*n-1))//输出小数点
> {
> cout<<".";
> point=0;
> i++;
> }
> else
> cout<<b[i];
> }
> cout<<endl;
> return 0;
> }
> void Mul (int a[],int b[])
> {
>
> int i , j , k , x , y , z;
> int length_a=Length(a);
> int length_b=Length(b);
> for( i=0;i<length_a;i++)
> {
> for(j=0;j<length_b;j++)
> {
> x=a[i]*b[j];
> y=x/10;
> z=x%10;
> k=i+j;
> c[k]+=z;
> c[k+1]=c[k+1]+y+c[k]/10;
> c[k]=c[k]%10;
> }
> }
> k=length_a+length_b-1;
> if(c[k]==0)k--;
> }
> int Length(int a[])
> {
> int i=N-1;
> while(!a[i]&&i>=0)
> i--;
> return i+1;
> }
>
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator