问题标题: 酷町堂:请问,2271题怎么写

0
0
已解决
项想
项想
初级守护
初级守护

2271   高级阶乘和                        经验值:800

题目描述 Description

已知s=1!+2!+3!+…+n!,这时s是从1到n的所有阶乘的和。老师把题目升级了,想要求从m到n的所有阶乘的和。(1<=m<n<=15)

输入描述 Input Description

两个数字m和n,用空格隔开

输出描述 Output Description

一个数字,求得的阶乘和

样例输入 Sample Input

1 3

样例输出 Sample Output

9

 

 

 

#include<iostream>

using namespace std;

long long m,n,s=1,sum;

int main(){

    cin>>m>>n;

    for(int i=1;i<=n;i++){

        s*=i;

        sum+=s;

        if(i>m){

        s+=i;

        }

    }

    cout<<s;

    return 0;

}

 

请问这一题我什么地方错了?

谢谢各位

 


0
已采纳
丁博扬
丁博扬
中级天翼
中级天翼

这题需要用到双重循环(我是这么做的)

先定义n和m

定义累乘计数器sum和f

从n循环遍历到m

sum归成1

j循环从1遍历到i

sum*=j;

f=f+sum;

  • 循环(i循环从m遍历到n){
  • sum=1;
  • 循环(j循环从1遍历到i){
  • sum=sum*j;
  • }
  • f=f+sum;
  • }

记得所有变量都要定义成long long类型的

丁博扬在2020-12-20 20:08:13追加了内容

输入m和n

0
被禁言 汪子晨
汪子晨
修练者
修练者
  • for(int i=1;i<=m-1;i++){
  • s*=i;
  • }
  • for(int i=m;i<=n;i++){
  • s*=i;
  • sum+=s;
  • }
  • cout<<sum;
  • //简单!!!
0
0
陈家傲
陈家傲
新手光能
新手光能

先遍历i~n,如果i=m时再开始累乘.

0
曹灿阳
曹灿阳
初级天翼
初级天翼

你是不是某个人的小号???

我要回答