描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。
本题含有多组输入数据。
数据范围:数据组数:1 <= t <= 5,1 <= m <= 100;
进阶:时间复杂度:O(1),空间复杂度:O(1)
输入描述:
输入一个int整数
输出描述:
输出分解后的string
示例1
输入:
6
输出:
31+33+35+37+39+41
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int input;
int sum , a0;
while(cin >> input)
{
sum = pow(input, 3);
//等差数列,input项,公差2,倒推首项a0
a0 = (sum*2/input - 2*(input-1))/2;
for(int i = 0; i < input-1; i++)
cout << a0+2*i <<'+';
//最后一个不加+号
cout << a0+2*(input-1) <<endl;
}
return 0;
}