50分求助怎么实现高精度

P1009 [NOIP1998 普及组] 阶乘之和

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;
}

会了吗?学过高精度吗?


|