小明看到一本书上写着:任何数字的立方都可以表示为连续奇数的和。
比如:
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
虽然他没有想出怎么证明,但他想通过计算机进行验证。
比如:
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>
using namespace std;
#define S 111*111*111
int a[S];
void js() {
int i,k=0;
for(i=1;i<S;i++) {
if(i%2==1) {
a[k++]=i;
}
}
}
int main()
{
int sum=0,i,j,k=1;
js();
for(i=0;i<=S;) {
sum+=a[i];
if(sum>S) {
i=k++;
sum=0;
}
else if(sum==S) {
cout<<a[k-1];
break;
}
else
i++;
}
return 0;
}