以hdu1042为题目
我一开始写的时候用一个数组记录这些数字,但是量太大。。?代码差不多但是运行不了
这个倒是不怕超时了
//
// main.cpp
// 5.2
//
// Created by Mr.Xue on 17/7/15.
// Copyright © 2017年 Mr.Xue. All rights reserved.
//
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#define max 100000
using namespace std;
int a[max];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
a[0]=1;
int digit=1,temp,carry,j;
for(int i=2;i<=n;i++)
{
carry=0;
for(j=0;j<digit;j++)
{
temp=a[j]*i+carry;
carry=temp/10;
a[j]=temp%10;
}
while(carry)
{
a[digit++]=carry%10;
carry=carry/10;
}
//digit=j;
}
int m;
for(m=max;m>=0;m--)
{
if(a[m]!=0)
break;
}
for(int i=m;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}