1091:求阶乘的和

题目链接:点击这里

#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0;
    for(int i = 1; i <= n; i++)
    {
        int fac = 1;                    //求i!
        for(int j = 1; j <= i; j++)
            fac *= j;
        sum += fac;                     //累加i!
    }
    
    cout << sum << endl;
    return 0;
}
#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0, fac = 1;
    for(int i = 1; i <= n; i++)
    {
        fac *= i;           //求i! 
        sum += fac;         //累加i!
    }
    
    cout << sum << endl;
    return 0;
}

算法效率如何度量?

  1. 事后统计
  2. 事前分析

步骤:

  1. 找到执行次数最多的语句
  2. 计算语句执行次数的数量级
  3. 用大О来表示结果

分析下面程序的功能,并计算时间复杂度?

#include

using namespace std;

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

对比下面两个程序的功能,分别计算时间复杂度?

#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0;
    for(int i = 1; i <= n; i++)
        sum += i;
    
    cout << sum << endl;
    return 0;
}
#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = (n + 1) * n / 2;
    
    cout << sum << endl;
    return 0;
}

计算下面三个程序的结果及其时间复杂度?

#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int a = 0;
    for(int i = 0; i < n; i++)
    {
        a++;    
    }
    for(int i = 0; i < n; i++)
    {
        a--;
    }
    
    cout << a << endl;
    return 0;
}
#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int a = 0;
    for(int i = 0; i < n; i++)
    {
        a--;
        for(int i = 0; i < n; i++)
        {
            a++;
        }
    }
    
    cout << a << endl;
    return 0;
}
#include

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int a = 0;
    for(int i = 0; i < n; i++)
    {
        a--;
        for(int i = 0; i < n; i++)
        {
            a++;
        }
    }
    
    int sum = 0;
    for(int i = 1; i <= a; i++)
        sum += i;
    
    cout << sum << endl;
    return 0;
}

并列:总复杂度等于量级最大的那段代码的复杂度。

嵌套:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积。

你可能感兴趣的:(1091:求阶乘的和)