P1009 [NOIP1998 普及组] 阶乘之和题解

题目

用高精度计算出S=1!+2!+3!+⋯+n!(n≤50)。

其中 ! 表示阶乘,定义为n!=n×(n−1)×(n−2)×⋯×1。例如5!=5×4×3×2×1=120

输入输出样例

输入

3

输出

9

代码

#include<stdio.h>
int main(){
	int i,A[1005]={0},B[1005]={0},n,j;//使用数组进行高精度运算,A,B数组初始所有位置都初始化为0
	scanf("%d",&n);
	A[0]=B[0]=1;//A,B数组的0位置初始化为1
	for(int i=2;i<=n;i++){//控制乘数,每一次执行下面的循环以后,B数组存储着当前i值得阶乘,A数组一次将前面计算得阶乘累加储存,同时两个数组不断进位
		for(int j=0;j<100;j++){//相当于100位可以扩充
			B[j]*=i;
		}
		for(int j=0;j<100;j++){//进位
			if(B[j]>9){
				B[j+1]+=B[j]/10;
				B[j]=B[j]%10;
			}
		}
		for(int j=0;j<100;j++){
			A[j]+=B[j];//累加前面得阶乘
			if(A[j]>9){//进位
				A[j+1]+=A[j]/10;
				A[j]%=10;
			}
		}
	}
	for (i=100;i>=0&&A[i]==0;i--);//去掉前导0
    for (j=i;j>=0;j--) printf("%d", A[j]);//输出
    return 0;
}

相关推荐

  1. P1009 [NOIP1998 普及] 之和题解

    2023-12-19 11:48:03       34 阅读
  2. P1008 [NOIP1998 普及] 三连击

    2023-12-19 11:48:03       31 阅读
  3. [普及][NOIP1998 普及] 三连击

    2023-12-19 11:48:03       14 阅读
  4. 【洛谷题解P1028 [NOIP2001 普及] 数的计算

    2023-12-19 11:48:03       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 11:48:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 11:48:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 11:48:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 11:48:03       20 阅读

热门阅读

  1. c++中使用互斥量

    2023-12-19 11:48:03       45 阅读
  2. ༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻

    2023-12-19 11:48:03       33 阅读
  3. 每日一题:Leetcode1314.矩阵区域和

    2023-12-19 11:48:03       39 阅读