题解一

没有用公式,好吧是没想到。。。

时间复杂度是O(N),空间复杂度0

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int n = 0;
    int sum = 0;
    while(scanf("%d",&n)!=EOF)
    {
        sum = pow(n, 3);
        int aver = sum / n;
        if(sum % 2 == 0)
        {
            //偶数
            aver--;
            for(int i = 0; i < n / 2 - 1; i++){
                aver -=2;
            }
            for(int i = 0; i < n; i++){
                if(i == n-1){
                    cout << aver;
                }else{
                    cout << aver <<"+";
                    aver +=2;
                }
                
            }
        }
        else
        {
            //奇数
            for(int i = 0; i < n / 2 ; i++){
                aver -=2;
            }
            for(int i = 0; i < n; i++){
                if(i == n-1){
                    cout << aver;
                }else{
                    cout << aver <<"+";
                    aver +=2;
                }
                
            }
        }
        cout <<endl;
    }
    
    
    return 0;
}

题解二

时间复杂度O(N),利用等差数列求和公式求得首项a1

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int num = 0;
    while(cin >> num )
    {
        int a1 = num*num - num + 1;
        for(int i = 0; i < num; i++){
            if(i == num - 1){
                cout << a1;
            }else{
                cout << a1 << "+";
                a1 += 2;
            }
        }
        cout <<endl;
    }
    return 0;
}