本篇博客主要针对于初学C语言的小伙伴!!!
验证尼科彻斯定理,即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。例如:
输入一个正整数 m(m≤100) ,将 m 的立方写成 m 个连续奇数之和的形式输出。
注意:本题含有多组输入数据。
输入描述:输入一个int整数
输出描述:输出分解后的string
对于和我一样刚学C语言的小白来说,当时是在做题的时候都尽力想着用更短更简洁的思路将这道题做出来。当然不论怎麽样,还是倡导大家先独立思考。
在这里就我对这道题分享一下我本人的思路和做法:
我个人觉得我们可以把这道题看做找规律的数学题,把两端的数字用公式确定下来,然后再用循环(产生数字)和判断(是否为就奇数)即可。
#include <stdio.h>
#include <math.h>
int main()
{
int n = 0;
scanf("%d", &n);
int a = (int)pow(n, 2) -n+1; //最左端的数字
int b = (int)pow(n, 2) + n - 1; //最右端的数字
printf("%d", a); // 这里这样调整是为了便于输出连加
for (int i = a+1; i <= b; i++) //产生数字
{
if (i % 2 != 0) //判断是否为奇数
{
printf("+%d", i);
}
}
return 0;
}