计算出S的值

正文索引 [隐藏]

题目描述:

计算S=1*2+2*3+3*4+…+N*(N+1),直到第N项N*(N+1)大于200为止。

代码:

题目有点模糊观察 我认为”直到”的意思是S要包括N*(N+1)大于200的第一项 也就是N=14那项要算进去

#include <iostream>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int sum = 0;
    __asm    //嵌入汇编语言代码段
    {
        mov edx,0000H   //用来存放最终结果,初始值为0
        mov bl,01H      //BL初始值为1
        fun:    //将AL和BL相乘
            mov al,bl      //AL相当于公式中n
            inc bl         //BL自增,BL相当于n+1
            mul bl          //用"mul 乘数"双字相乘时,被乘数默认在EAX中
            add edx,eax     //将第n项的结果从EAX中累加在EDX中
            cmp eax,00C8H   //比较N*(N+1)与200的大小
            jna fun    //JNA是目的操作数小于等于源操作数时继续循环,而JB只是小于
        mov sum,edx    //保存计算结果
    }
    cout << "sum = " << sum << endl;
    return 0;
}

运行代码可以得到1120。