Re: 久等了 :)
完成版啦...
#include<stdio.h>
#include<math.h>
#define ZZZ 10000
int mal(long int*,int);
void pr(long int*,int);
int main(void)
{
long int ans[ZZZ]={0};
ans[ZZZ-1]=1;
int n,prnum;
printf("Calculate n! n=? ");
scanf("%d",&n);
for(int i=1;i<=n;i++)
prnum=mal(ans,i);
pr(ans,prnum);
return 0;
}
int mal(long int* cal,int x)
{
static int dig=1; /*位數*/
for(int i=ZZZ-dig;i<ZZZ;i++)
*(cal+i) *= x;
for(i = ZZZ-1;i>=ZZZ-dig+1;i--)
{
if (*(cal+i)>9)
{
*(cal+i-1) += *(cal+i)/10;
*(cal+i) %= 10;
}
}
if(*(cal+i)>9)
{
dig += floor(log10(*(cal+i)));
for(int z=1;z<=floor(log10(*(cal+i)));z++)
{
*(cal+i-z) += *(cal+i)/10;
*(cal+i) %=10;
}
}
return dig;
}
void pr(long int* in,int i )
{printf("\n\n");
for(int j = i ; j>0;j--)
{
int prnow=ZZZ-j;
printf("%d",*(in+prnow));
}printf("\n\n");return;
}
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.30.127
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):