nyoj28 大数阶乘

来源:互联网 发布:青岛java培训学校 编辑:程序博客网 时间:2024/04/30 15:21
nyoj24 大数阶乘
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28
正确代码:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;const int maxn=40000;int a[maxn]={0};int main(){  int m,i,j;  scanf("%d",&m);  a[0]=1;  for(i=2;i<=m;i++)  {    int carry=0;    for(j=0;j<maxn;j++)    {      int res=a[j]*i+carry;      a[j]=res%10;      carry=res/10;    }  }  for(j=maxn-1;j>=0;j--)    if(a[j])      break;  for(i=j;i>=0;i--)    printf("%d",a[i]);    printf("\n");  return 0;}        超时代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;char s[100000];int main(){  int m,i,j;  scanf("%d",&m);  strcpy(s,"1");  for(i=2;i<=m;i++)  {    int carry=0;    for(j=0;j<strlen(s);j++)    {      int res=(s[j]-'0')*i+carry;      carry=res/10;      s[j]=(res%10)+'0';    }    while(carry!=0)    {      s[j++]=(carry%10)+'0';      carry/=10;    }  }  reverse(s,s+strlen(s));  printf("%s\n",s);  return 0;}                           

0 0
原创粉丝点击