象帝之先


私信TA

用户名:scorpiowolf

访问量:79045

签 名:

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

等  级
排  名 43
经  验 12496
参赛次数 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<stdio.h>
int main()
{
	int n,i,j,num2=0,num1=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		int num1=1;
		for(j=i;j>0;j--)
		{
			num1=num1*j;
		}
		num2=num2+num1;
	}
	printf("%d",num2);
	return 0;
}我也是错的
但运行是对的
2020-11-29 16:01:57
#include<stdio.h>
int main()
{
   	int n;
	scanf("%d",&n);
	long long sum=0,i;
	int t=1;
	for(i=1;i<=n;i++)
	{
	    t*=i;
		sum+=t;	
	}
	printf("%lld",sum);
}
x
2020-10-14 00:14:43
#include<stdio.h>
int main()
{
	int r=1,n,q=0;
	scanf("%d",&n);
	for(int p=1;p<=n;p++){
		for(int i=1;i<=p;i++){r*=i;}
		q+=r;
		r=1;
	}
	printf("%d",q);
	return 0;
}这样为什么是错的呢?
2020-07-18 20:32:00
#include <iostream>
using namespace std;
int main()
{
	int n,i=1,sum=0,t=1;
	cin>>n;
	while(i<=n)
	{
		t=t*i;
		sum+=t;
		i++;
	}
	cout<<sum;
}
2020-07-03 13:03:09
#include <stdio.h>
unsigned long long f(int n)
{
	if(n==1)
		return 1;
	else
		return n*f(n-1);
}
int main()
{
	int i,n;
	unsigned long long Sn=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		Sn+=f(i+1);
	}
	printf("%llu",Sn);
	return 0;
}
2020-04-22 15:30:27
#include<iostream>
using namespace std;
int main()
{
	int n,long long Sn=0,i,long long sn=1;
	cin >> n;
	while(n--)
	{
		for (i = n; i>0 ; i--)
		{
			sn = sn * i;
		}
		Sn = Sn + sn;
		sn = 1;
	}
	cout << Sn << endl;
	return 0;
}
为什么这样不行呢
2020-03-17 10:50:34
#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    long long sum=0,index=1;//128,425,485,935,180,313 128,425,485,935,180,313
    for(int i=1;i<=n;i++){
        index*=i;
        sum+=index;
    }
    cout << sum;
    return 0;
}
我试了1~19全部数据,全部正确,为啥提交就WA???
2020-03-07 10:01:38
#include<stdio.h>
#include "stdafx.h"  
int main()
{
	int s,n,i,a;
	scanf("%d",&n);

	if(n>1&&n<20)
	{
		s=1;
		a=1;
	for(i=1;i<n;i++)
	{ 
		a=a*(i+1);
		s=s+a;
	}

	}
	if(n==1)
	 s=1;

	printf("%d\n",s);
	return 0;
} 为什么有错误呢
2020-03-05 21:55:21