题解一
没有用公式,好吧是没想到。。。
时间复杂度是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;
}