#include<stdio.h>
#include<time.h>
#include<windows.h>
#include<time.h>
#define N 10000
int main()
{
long a[500000] ;
memset(a,500000,0);/*清零*/
a[0]=1;/*对数组a的第一位赋值1*/
long i , j , k , bit=1 ;/*bit记录结果的位数*/
clock_t cStart;
clock_t cEnd;
double dDuration;
cStart=clock();
for(i=1;i<=N;++i)
{
for(j=0;j<bit;++j)
{
a[j]*=i;
}
for(j=0;j<bit;++j)
{
if(a[j]>=10)
{
k=a[j];
a[j]=k%10;
k/=10;
if(j+1==bit)
++bit;
a[j+1]+=k;
}
}
}
cEnd=clock();
dDuration = (double)(cEnd - cStart) / CLOCKS_PER_SEC;
printf("10000!=");
for(i=bit-1;i>=0;--i)
printf("%ld",a[i]);
printf("\n耗时%f\n", dDuration);
system("pause");
return 0;
}
顺便说声:7楼结果有错, 呵呵……
耗时:2.976000s,明显比不上10楼的 ^呵呵^
#include<time.h>
#include<windows.h>
#include<time.h>
#define N 10000
int main()
{
long a[500000] ;
memset(a,500000,0);/*清零*/
a[0]=1;/*对数组a的第一位赋值1*/
long i , j , k , bit=1 ;/*bit记录结果的位数*/
clock_t cStart;
clock_t cEnd;
double dDuration;
cStart=clock();
for(i=1;i<=N;++i)
{
for(j=0;j<bit;++j)
{
a[j]*=i;
}
for(j=0;j<bit;++j)
{
if(a[j]>=10)
{
k=a[j];
a[j]=k%10;
k/=10;
if(j+1==bit)
++bit;
a[j+1]+=k;
}
}
}
cEnd=clock();
dDuration = (double)(cEnd - cStart) / CLOCKS_PER_SEC;
printf("10000!=");
for(i=bit-1;i>=0;--i)
printf("%ld",a[i]);
printf("\n耗时%f\n", dDuration);
system("pause");
return 0;
}
顺便说声:7楼结果有错, 呵呵……
耗时:2.976000s,明显比不上10楼的 ^呵呵^