大数据:fac

来源:互联网 发布:淘宝宝登陆 编辑:程序博客网 时间:2024/05/19 13:18
#include <stdio.h>#include <string.h>#include <stdlib.h>void mul(char *a,char *b,char *c){int i;int j;int ca;int cb;int *s;ca=strlen(a);cb=strlen(b);s=(int*)malloc(sizeof(int)*(ca+cb));for(i=0;i<ca+cb;i++)//对结果各位赋值为0    s[i]=0;/*for(i=0;i<ca;i++)    for(j=0;j<cb;j++)    s[i+j+1]+=(a[i]-'0')*(b[j]-'0');*/for(i=ca-1;i>=0;i--) //不考虑进位,进行乘法计算    for(j=cb-1;j>=0;j--)    s[i+j+1]+=(a[i]-'0')*(b[j]-'0');for(i=ca+cb-1;i>=0;i--)//处理各位的进位    if(s[i]>=10)    {    s[i-1]+=s[i]/10;    s[i]%=10;    }//////////////////////i=0;while(s[i]==0) //处理前导零的情况    i++;///////////////for(j=0;i<ca+cb;j++,i++)//计算最终结果    {    c[j]=s[i]+'0';    //printf("%c",c[j]);    }c[j]='\0';free(s);}int  main(){char str1[3000];char str2[3000];char str3[3000];int n,i;memset(str1,0,sizeof(str1));memset(str2,0,sizeof(str2));memset(str3,0,sizeof(str3));printf("请输入一个数:\n");scanf("%d",&n);sprintf(str2,"%d",1);for(i=2;i<=n;i++)    {    sprintf(str1,"%d",i);    mul(str1,str2,str3);    strcpy(str2,str3);    }for(i=0;i<strlen(str3);i++)    printf("%c",str3[i]);printf("len=%d\n",strlen(str3));    return 0;}
0 0
原创粉丝点击