首页 > 其他分享 >(C语言)1到50的阶乘之和列表,参考用,洛谷:P1009 [NOIP1998 普及组] 阶乘之和

(C语言)1到50的阶乘之和列表,参考用,洛谷:P1009 [NOIP1998 普及组] 阶乘之和

时间:2023-11-02 17:12:58浏览次数:52  
标签:10 洛谷 P1009 int sum 50 阶乘 sin

1到50列表,阶乘之和

S=1!+2!+3!+⋯+n!(n≤50)

1::1
2::3
3::9
4::33
5::153
6::873
7::5913
8::46233
9::409113
10::4037913
11::43954713
12::522956313
13::6749977113
14::93928268313
15::1401602636313
16::22324392524313
17::378011820620313
18::6780385526348313
19::128425485935180313
20::2561327494111820313
21::53652269665821260313
22::1177652997443428940313
23::27029669736328405580313
24::647478071469567844940313
25::16158688114800553828940313
26::419450149241406189412940313
27::11308319599659758350180940313
28::316196664211373618851684940313
29::9157958657951075573395300940313
30::274410818470142134209703780940313
31::8497249472648064951935266660940313
32::271628086406341595119153278820940313
33::8954945705218228090637347680100940313
34::304187744744822368938255957323620940313
35::10637335711130967298604907294846820940313
36::382630662501032184766604355445682020940313
37::14146383753727377231082583937026584420940313
38::537169001220328488991089808037100875620940313
39::20935051082417771847631371547939998232420940313
40::836850334330315506193242641144055892504420940313
41::34289376947494122614363304694584807557656420940313
42::1439295494700374021157505910939096377494040420940313
43::61854558558074209658512637979453093884758552420940313
44::2720126133346522977702138448994068984204397080420940313
45::122342346998826717539665299944651784048588130840420940313
46::5624964506810915667389970728744906677010239883800420940313
47::264248206017979096310354325882356886646207872272920420940313
48::12678163798554051767172643373255731925167694226950680420940313
49::620960027832821612639424806694551108812720525606160920420940313
50::31035053229546199656252032972759319953190362094566672920420940313

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

代码

#include <stdio.h>
int main(void) {
	int n, sum[70] = { 0 }, sin[70] = { 0 };
	sin[0] = 1;
	scanf_s("%d", &n);
	for (int i = 1; i <= n; i++) {
		sin[0] = 1;
		for (int k = 1; k <= i; k++) {//计算每个阶乘
			for (int j = 0; j < 70; j++) {
				sin[j] *= k;
			}
			for (int j = 0; j < 70 - 1; j++) {
				if (sin[j] > 9) {
					sin[j + 1] += sin[j] / 10;
					sin[j] %= 10;
				}
			}
		}
		
		for (int j = 0; j < 70; j++) {//每个阶乘与sum相加	
			sum[j] += sin[j];
			sin[j] = 0;
		}
		for (int j = 0; j < 70; j++) {
			if (sum[j] > 9) {
				sum[j + 1] += sum[j] / 10;
				sum[j] %= 10;
			}
		}
	}
	for (int i = 69; i >= 0; i--) {//输出
		if (sum[i] != 0) {
			for (int j = i; j >= 0; j--) {
				printf("%d", sum[j]);
			}
			break;
		}
	}
}

标签:10,洛谷,P1009,int,sum,50,阶乘,sin
From: https://www.cnblogs.com/l25428455/p/17766760.html

相关文章

  • 洛谷 P2290 [HNOI2004] 树的计数(Prufer序列,Cayley 公式)
    传送门解题思路关于Prufer序列的构造,见OI-wiki这里直接放结论:一个Prufer序列与一个无根树一一对应度数为\(d_i\)的节点在序列中出现了\(d_i-1\)次\(\sum(d_i-1)=n-2\)n个点的完全图的生成树有\(n^{n-2}\)种所以相当于n-2个数(有重复的)进行全排列,答案即为:\[\frac......
  • 洛谷P3522/POI2011 TEM-Temperature
    涉及知识点:单调队列、贪心、递推前言最近找了点单调队列的题练练手,就遇到这道题,本题对于单调队列弹队尾的时候有别于普通单调队列,一些题解并没有写的很清楚,因此写下这篇题解。题面Link你有一个长度为\(n\)的序列\(A\),告诉你序列中每一个数\(A_i\)的取值范围\(down_i\)......
  • 题解:洛谷P3745 期末考试(整数三分)
    题解:洛谷P3745期末考试(整数三分)题目传送门题目大意:给出\(n\)个同学期望出成绩的时间限制\(a_i\)和\(m\)个学科公布成绩的初始时间\(t_i\),1个同学每多等一天就产生A的不愉快度。问通过一番操作后最小的不愉快度之和是多少?操作有两种:1.让学科X的发布时间晚1天,学科......
  • 洛谷P3805 【模板】manacher
    题目链接:https://www.luogu.com.cn/problem/P3805manacher算法模板题。参考资料:https://oi-wiki.org/string/manacher/示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=2.2e7+5;intn;chars[maxn/2],a[maxn];intp[maxn];voidinit(){......
  • 洛谷3281数数
    这一道题给我们最大的启示就是一定要学会固定数字!设\(Pow[i]=B^i\),\(f[i]=\sum_{k=0}^{i}{B^k}\)\(h[i]\)表示所有\(i\)位数字的所有前缀子串的和比如\(123456\)一共有\(6\)位,他的所有前缀子串为\(1,12,123,1234,12345,123456\),他的所有前缀子串和就是这六个数加起来,那么\(h[6......
  • P3989 [SHOI2013] 阶乘字符串
    P3989bzoj#4416先考虑部分分,看到\(n\leq20\)容易想到这个部分可以用状压起初可以设\(dp_{S,i}\)表示在前\(i\)个数中选出集合\(S\)中的字母是否可行,转移即枚举下一个字母是什么这个dp有一个很显然的性质:他肯定是前缀一段\(0\),后缀一段\(1\)。我们不妨优化一......
  • 【洛谷 8649】 [蓝桥杯 2017 省 B] k 倍区间
    题目描述给定一个长度为 �N 的数列,�1,�2,⋯��A1​,A2​,⋯AN​,如果其中一段连续的子序列 ��,��+1,⋯��(�≤�)Ai​,Ai+1​,⋯Aj​(i≤j) 之和是 �K 的倍数,我们就称这个区间 [�,�][i,j] 是 �K 倍区间。你能求出数列中总共有多少个 �K 倍区间吗?输入格式第一行包含两个整数 �N 和 �K......
  • 【洛谷 8742】[蓝桥杯 2021 省 AB] 砝码称重
    题目描述你有一架天平和 �N 个砝码,这 �N 个砝码重量依次是 �1,�2,⋯ ,��W1​,W2​,⋯,WN​ 。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 �N 。第二行包含 �N 个整数: �1,�2,�3,⋯ ,��W1​,W2​,W3​,⋯,WN​......
  • 【洛谷 2347】[NOIP1996 提高组] 砝码称重
    题目描述设有 1g1g、2g2g、3g3g、5g5g、10g10g、20g20g 的砝码各若干枚(其总重≤1000≤1000),可以表示成多少种重量?输入格式输入方式:�1,�2,�3,�4,�5,�6a1​,a2​,a3​,a4​,a5​,a6​(表示 1g1g 砝码有 �1a1​ 个,2g2g 砝码有 �2a2​ 个,…,20g20g 砝码有 �6a6​ 个)输出格式......
  • 【洛谷 8601】 [蓝桥杯 2013 省 A] 剪格子
    #[蓝桥杯2013省A]剪格子##题目描述如图$1$所示,$3\times3$的格子中填写了一些整数。![](https://cdn.luogu.com.cn/upload/image_hosting/hsfjsi38.png)我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是$60$。本题的要求就是请你编程判定:对给定的$m\tim......