【问题描述】尼克切丝定理: 任何一个整数n的立方都可以表示成一串连续的奇数之和。 设计程序验证尼克切丝定理。
【输入形式】一个整数n,2<=n<=30
【输出形式】一个奇数a和一个整数k,使 a+(a+2)+...+(a+2k-2) = n*n*n 。要求k >= 2,并且k尽可能小。
【样例输入】
3
【样例输出】
7 3
【样例说明】7 + 9 + 11 = 27
思路:本题较简单,公式推导即可。
代码:
#include<stdio.h>
int main()
{
int n; //输入整数n
scanf ("%d", &n);
double a, k=2.0;
do
{
a =(n * n * n - k * k + k) / k; //利用公式算出a
k = k + 1.0;
}
while ( a - (int)a == 0 && (int)a % 2 == 0 || a - (int)a != 0); //a不是整数或为偶数时继续循环
k = k - 1; //k还原为最小值(减去最后一次循环多加的1)
printf ("%d %d",(int)a, (int)k); //a,k转化为整数
return 0;
}