问题描述
验证尼科彻斯定理,即:任何一个整数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; }
输出