HJ76--尼科彻斯定理

问题描述

验证尼科彻斯定理,即:任何一个整数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
#include
#include
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;
}

输出
HJ76--尼科彻斯定理_第1张图片

你可能感兴趣的:(C语言刷题,算法,c++,c语言)