Esirn's Blog. Welcome and Goodbye.

1~20的阶乘之和

2018-10-01
Esirn

阅读:


代码

C语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//SUM(1!~20!).c
#include<stdio.h>
int main()
{
	int i=1;
	long long sum=0,j=1;
	printf("SUM(1!~20!)\n=0");
	for(;i<21;i++)
	{
		j *= i;
		sum += j;
		printf("+%lld",j);
	}
	printf("\n=%lld\n",sum);
	return 0;
}  

C++语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//SUM(1!~20!).cpp
#include<iostream>
using namespace std;
int main()
{
	int i=1;
	__int64 m=0,j=1;
	cout<<"SUM(1!~20!)"<<endl<<"=0";
	for(i;i<21;i++)
	{
		j*=i;
		m+=j;
		cout<<"+"<<j;
	}
	cout<<endl<<"="<<m<<endl;
	return 0;
}  

输出结果:2561327494111820213

其他

  • __int64long long,以及 .c(C语言) 与 .cpp(C++语言) 的异同可自行研究。
  • 一开始用 int 整型变量时,在没让程序 printf 出每个数的阶乘得数的情况下,求出结果是 268040729,可通过部分信息证伪,正确结果:
    1. 肯定以“3”结尾,即个位数字为3。
    2. 肯定是3的倍数。
    3. 至少是17位数(实际是19位)。

参考资料


Comments

Content