小明看到一本书上写着:任何数字的立方都可以表示为连续奇数的和。
比如:
2^3 = 8 = 3 + 5
3^3 = 27 = 7 + 9 + 11
4^3 = 64 = 1 + 3 + ... + 15 1 3 5 7 9 11 13 15 31 33
虽然他没有想出怎么证明,但他想通过计算机进行验证。
请你帮助小明写出 111 的立方之连续奇数和表示法的起始数字。如果有多个表示方案,选择起始数字小的方案。
思路:
列出111立方内的奇数,在求连续的和是否等于111的立方
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#define S 111*111*111
using namespace std;
int a[S];
void js() //求出奇数
{
int i,k=0;
for (i=1;i<=S/2+10;i++)
{
if (i%2 == 1)
{
a[k++] = i;
}
}
}
int main()
{
int sum = 0,i,j,k=1;
js();
for (i=0; i<=S/2+10;)
{
sum += a[i];
if (sum > S)
{
i=k++; //大于S,又从上一次起始位置的后一个开始累加
sum = 0;
}
else if (sum == S)
{
cout<<a[k-1];
break;
}
else
i++;
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-9351.html