问题描述
验证尼科彻斯定理,即:任何一个整数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≤m≤100
而我们不知道的是在尼科彻斯定理中开始的数是:n*n-n+1
当知道开始的数后我们就能很方便的得到其他的数。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int main()
{
int n;
while (EOF != scanf("%d", &n))
{
int* arr;
arr = (int*)malloc(n * sizeof(int));
int first = n * n - n + 1;
if (n == 1)
{
printf("1\n");
}
if (n != 1)
{
for (int i = 0; i < n ; ++i)
{
arr[i] = first;
first += 2;
}
}
for (int i = 0; i < n; ++i)
{
printf("%d", arr[i]);
if (i < n - 1)
{
printf("+");
}
}
printf("\n");
free(arr);
}
return 0;
}
输出