一个简单的程序??ACM高手快请进。
我最近做的是ACM题目的1001 我写的程序在下面 但是为什么就是不可以成功 我也知道错误在什么地方 但是我不会改,那为ACM大哥帮帮忙//谢谢,程序中我已经表明了有问题的地方 ,希望那位大哥帮帮忙。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
题目的意思就是求一个数 比如95.123 的12次方的精确的值,为548815620517731830194541.899025343415715973535967221869852721
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <iostream>
using namespace std;
int main()
{
float n;
int b ;
int a[100000];
while( cin > > n > > b )
{
int c,temp,len=1,i,j,k,l,m,e,f;
a[0] = 1;
for(f = 1; f < 100000;f++ )
{
a[f] = 0;
}
for( i = 1; ; i++)
{
n *= 10;
if( n - int(n) == 0)break; //有问题
}
for( j = 0 ; j < b; j++)
{
c = 0;
for( k = 0; k < len ; k ++)
{
temp = a[k]*n + c;
c = temp/10;
a[k] = temp%10;
}
while( c > 0)
{
len ++;
a[len - 1] = c;
c = c/10;
a[len - 1] = a[len - 1]%10;
}
}
if( len < i * b )
{
cout < < ". ";
for( m = i*b-len -1; m > = 0;m-- )
{
cout < < "0 ";
}
for( e = len -1;e > =0;e--)
{
cout < < a[e];
}
}
else {
for( l = len - 1;l > = 0; l--)
{
if( l == i*b -1 )
{
cout < < ". ";
cout < < a[l];
l--;
}
cout < < a[l];
}
}
cout < < endl;
}
system( "pause ");
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入的是:
95.123 12
0.4321 20
5.1234 15
6.7592 9
98.999 10
1.0100 12
输出的是:
548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992077088.899895999176441060077939143829369618591349367001047121879773131136072932137864237625137941245917684301824
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201
[解决办法]
参数定义有问题吧,而且数组大小定义也有问题,搂主自己再斟酌斟酌
[解决办法]
lz,你写的太乱了,都不知道你为什么要这样写?!
for(f = 1; f < 100000;f++ )
{
a[f] = 0;
}
有必要这样赋值?