zaxx @ 2022-11-14 11:24:12
#include<stdio.h>
int F(int n);
int main(void)
{
int n;
int i;
int sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+F(i);
}
printf("%d",sum);
return 0;
}
int F(int i)
{
if(i==1||i==0)
return 1;
else
return i*F(i-1);
}
by Katz @ 2022-11-14 11:27:12
高精度
by Dio_The_World @ 2022-11-14 20:55:08
#include <iostream>
#include <cstring>
#include <string.h>
using namespace std;
int c[100]={1},s[100]={1};//数组
int n,lc=1,ls=1,x;
int main()
{
cin>>n;
for(int i=2;i<=n;i++)//从2开始乘
{
x=0;//进位
for(int j=0;j<lc;j++)
{
c[j]=c[j]*i+x;
x=c[j]/10;
c[j]%=10;
}//处理乘法
while(?)//防抄袭,这里处理进位
{
c[lc++]=x%10;
x/=10;
}
for(int j=0;j<ls||j<lc;j++)
{//加法
s[j]=s[j]+c[j]+x;
x=s[j]/10;
s[j]%=10;
}ls=max(ls,lc);if(x)s[ls++]=x;//进位处理
}
for(int i=ls-1;i>=0;i--)cout<<s[i];//输出
return 0;
}
会了吗?学过高精度吗?