洛谷P1009 [NOIP1998 普及组] 阶乘之和

题目链接:https://www.luogu.com.cn/problem/P1009

很水的一道题,无非是高精度乘法(高低乘)和高精度加法的结合体罢了,我的前一篇博客有高精度四件套,不会的可以去参考,思路都是一样的;

注意事项及代码如下:

复制代码
#include<bits/stdc++.h>
using namespace std;
int a[110];//用来储存阶乘结果 110是假设位数,可能不够,不够再添即可 
int b[110];//用来储存求和结果
void cheng(int *a,int x)
{
    int jw=0;//两个进位 
    for(int i=1;i<=110;i++)
    {
        a[i]=a[i]*x+jw;
        jw=a[i]/10;
        a[i]=a[i]%10;
    }
}
void add(int *a,int *b)
{
    int jw=0;//同上 
    for(int i=1;i<=110;i++)
    {
        b[i]=a[i]+b[i]+jw;
        jw=b[i]/10;
        b[i]=b[i]%10;
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    a[1]=1;//从1开始 
    for(int i=1;i<=n;i++)//每次循环阶乘,求和 
    {
        cheng(a,i);
        add(a,b);
    }
    bool flag=0;//判断前导,如果是0就不输出,所以一开始定义为0,假设前导都是0 
    for(int i=110;i>=1;i--)
    {
        if(b[i]!=0) flag=1;//bool逻辑判段 
        if(flag==1)  printf("%d",b[i]);//如果满足条件,输出即可 
    }
    return 0;
}
复制代码

 

posted @   江上舟摇  阅读(143)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示