每日一题----尼科彻斯定理
题目来源:牛客网—尼克切斯定理
1.题目:
描述
验证尼科彻斯定理,即:任何一个整数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
进阶:时间复杂度:O(m) ,空间复杂度:O(1)
输入描述:
输入一个int整数
输出描述:
输出分解后的string
示例1
输入:
6
复制
输出:
31+33+35+37+39+41
2.解题思路:
首先要寻找规律:
(1)不管n是奇数还是偶数,连续n个数相加的平均值一定是n的平方
(2)n为奇数时,第一个数字(odd_start)是:avarge-2*(n/2)
最后的数字(odd_end)是:avarge+2*(n/2)
(3)同理:n为偶数时,第一个数字(even_start)是avarge-n+1
最后一个数字(even_end)是avarge+n+1
3.代码的实现:
#include<stdio.h>
void func(int n)
{
int avarge=n*n;
if(n%2==1)
{
int odd_start=avarge-2*(n/2);
int odd_end=avarge+2*(n/2);
int m=n-1;
while(m)
{
printf("%d+",odd_start);
m--;
odd_start+=2;
}
printf("%d",odd_end);
}
else if(n%2==0)
{
int even_start=avarge-n+1;
int even_end=avarge+n-1;
int m=n-1;
while(m)
{
printf("%d+",even_start);
m--;
even_start+=2;
}
printf("%d",even_start);
}
}
int main()
{
int n=0;
scanf("%d",&n);
func(n);
return 0;
}
________________________________________________________________________完