| ||||||||||
| 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 | |||||||||
谁能帮我一下 老是错 几乎每种情况都想到了#include <iostream.h>
#include<string.h>
#define ANUM 100
void main()
{
int resdot, basdot, baslen, reslen, templen, op2len;
char string[7];
int xunhuan;
while (cin>>string>>xunhuan)
{
/* 初始化 */
resdot=basdot=baslen=reslen=templen=op2len=0;
short base[ANUM]={0}, result[ANUM]={0}, op2[ANUM]={1};
int i, j;
if(xunhuan==0)
result[0]=1;
for(j=strlen(string)-1, i=0; i<ANUM&&j>=0; i++,j--)
{
if(string[j]=='.')
{
basdot=i;
i--;
}
else
{
base[i]=string[j]-'0';
}
}
baslen=5;
reslen=0;
op2len=1;
/* 初始化中有 base result op2 */
for(i=0; i<xunhuan; i++)//作乘法
{
int m, n;
int carry=0;
for(m=0; m<reslen; m++)
result[m]=0;
for(m=0; m<baslen; m++)
{
carry=0;//进数赋零
for(n=0; n<op2len; n++)
{
result[m+n]+=base[m]*op2[n]+carry;//计算
carry=result[m+n]/10;
result[m+n]%=10;
}
while(carry>0)
{
result[m+n++]=carry%10;
carry/=10;
}
reslen=m+n;
}
for(m=0; m<reslen; m++)
{
op2[m]=result[m];
op2len=reslen;
}
}
resdot=basdot*xunhuan;//小数点
for(i=0; i<reslen&&result[i]==0; i++) ;
j=i;
int is=0;
for(i=reslen-1; i>j; i--)
{
if(result[i]>0||is>0)
cout<<result[i];
if(resdot==i)//输出小数点
{
cout<<".";
is++;
}
}
cout<<result[j]<<endl;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator