问题标题: 酷町堂:1964 累乘运算 2

0
0
已解决
杨陈卓
杨陈卓
新手天翼
新手天翼
#include<iostream>
using namespace std;
int main()
{
    long long s=1;
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=3;i++)
    {
        s*=n*m;
        n+=1;
        m+=1;
    }
    cout<<s<<endl;
    return 0;
}

为什么60分


2
已采纳
曾凡一
曾凡一
新手光能
新手光能

你的思路首先就有问题,理解错题意了。

n(n+1)...m(m+1)*(m+2)是指n*(n+1)*(n+2)*(n+3)*(n+4)*...*m*(m+1)*(m+2)

如果n与m之间的差值大于3,你就错了。

如果n=1 m=4 按照你的程序则是s=1*1*4*2*5*3*6 "1*"可以忽略,根据乘法分配率,可发现1*4*2*5*3*6=1*2*3*4*5*6  这是巧合,错的!!!!!

 

如果n=1 m=5 按照你的程序s=1*1*5*2*6*3*7 题意却是s=1*2*3*4*5*6*7 少了乘4 用你的程序算出结果答案是1260,如果按照题目要求答案应该是5040,正好少了乘4。

 

正确应该是这样

s定义为1
输入n和m
循环从n到m+2,每次s乘上i
输出s

 

0
我要回答