象帝之先


私信TA

用户名:scorpiowolf

访问量:78779

签 名:

科技改变世界,万物皆可编程。

等  级
排  名 43
经  验 12461
参赛次数 3
文章发表 53
年  龄 20
在职情况 学生
学  校 青岛理工大学琴岛学院
专  业 计算机科学与技术

  自我简介:

一个合格程序员的标准: 兴趣否? 持之以恒否? 耐寂寞钻研否? 挖掘机技术哪家强?

解题思路:


利用双层for循环嵌套,外层模拟每个阶乘数的累加,内层模拟每个数的阶乘,每次求出部分阶乘的结果,并加

入总结果中


注意事项:

本题输入变量的数据范围是20以内,大家可以试验实验输入19,会发现输出了一个负数,说明结果的大小超出

了int类的储存范围,故需要用long long类的变量来储存部分结果和总结果。

参考代码:

#include<iostream>
using namespace std ;
int main()
{
	long long sn = 0 ;//总结果
	int n ;//输入
	cin>>n ;
	long long sum = 1 ;//部分阶乘结果
	for(int i = 1;i <= n;i++)//每个阶乘数的累加
	{
		for(int j = 1;j <= i;j++)//阶乘内部计算
		{
			sum *= j ;
		}
		sn += sum ;//将每部分阶乘的计算结果加入总结果
		sum = 1 ;//回溯,初始化,方便储存下次循环的部分结果
	}
	cout<<sn<<endl ;//输出结果
	return 0 ;
}


 

0.0分

58 人评分

  评论区

#include<iostream>
using namespace std;
int sn(int n);
int main() 
{
	int a,temp=0;
	cout << "数入一个不超过20的数:";
	cin >> a;
	
	for (int ac =1;ac<=a;ac++) 
	{
		temp += sn(ac);
	}
	cout << temp;

	return 0;

}
int sn(int n ) 
{
	if (n == 0 || n ==1)
		return 1;
	return sn(n-1)*n;
}
为什么只有五十分!!!
2024-03-28 22:25:23
为什么用int代替long long只有50分
#include<iostream>
using namespace std;
int main()
{
    int i,j,n;
	int a=1,sum=0;
    cin>>n;
    for(i=1;i<=n;i++){   	
    	for(j=1;j<=i;j++){
		a=a*j;	
    	}
    	sum=sum+a;
    	a=1;
	}
    cout<<sum<<endl; 
    return 0;
}
2024-01-17 22:37:27
#include<iostream>
using namespace std;

int main()
{
    int n;
    long long sn=0;
    cin>>n;
    
    for(int i=1;i<=n;i++)
    {
        int jc=1;
        for(int j=1;j<=i;j++)
        {
            jc*=j;
        }
        sn+=jc;
    }
    cout<<sn<<endl;
    return 0;
    
}

这样为什么是错的呀
2022-04-16 20:53:53
#include <iostream>
using namespace std;
int main ()
{
	int n;
	cin>>n;
	int a=1,s=0;
	for(int i=1;i<=n;i++){
		a*=i;
		s+=a;
	}
	cout<<s;
	return 0;
}
为什么显示答案错误?
2021-10-09 19:07:53
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int i,n,a=1;
	long long Sn=0;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		a*=i;
		Sn+=a;
	}
	cout << Sn<<endl;
}
2021-02-20 23:10:37
这个代码是错的
2021-01-28 00:07:07
#include<stdio.h>
int main()
{
	long long n,sn=0,i,a=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		a=a*i;
		sn+=a;
	}
	printf("%ld\n",sn);
}
这样好像就可以了
2021-01-21 13:55:11
#include<stdio.h>
int main()
{
	int n,sn=0,i,a=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		a=a*i;
		sn+=a;
	}
	printf("%d\n",sn);
}
2021-01-21 13:52:11