模板
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,j,k;
int n,a[100010];
a[0]=1;
int cnt=1;
int temp;
while(scanf("%d",&x)!=EOF)
{
int jin=0; //进位
for(j=0;j<cnt;j++){
temp=a[j]*x+jin; //每一位乘
a[j]=temp%10;
jin=temp/10;
}
while(jin){ //高位
a[cnt++]=jin%10;
jin/=10;
}
for(i=cnt-1;i>=0;i--){
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}
这个模板是不断乘x的。
这里以阶乘为例 HDU 1042
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,j,k;
int n,a[100010];
while(scanf("%d",&n)!=EOF)
{
a[0]=1;
int cnt=1;
int temp;
for(i=1;i<=n;i++){
int jin=0;
for(j=0;j<cnt;j++){
temp=a[j]*i+jin;
a[j]=temp%10;
jin=temp/10;
}
while(jin){
a[cnt++]=jin%10;
jin/=10;
}
}
for(i=cnt-1;i>=0;i--){
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}