标题:找到更多的这样的整数:一些相续正整数的立方和正好等于另一个整数的立方。
取消只看楼主
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
结帖率:100%
已结贴  问题点数:20 回复次数:2 
找到更多的这样的整数:一些相续正整数的立方和正好等于另一个整数的立方。
下面是题目 和 我想到的最优算法,大家看看有没有更好的算法

程序代码:
/*编写一个应用程序,验证以下等式是成立的:
3^3+4^3+5^3=6^3;
6^3+7^3+...+69^3=180^3;
找到更多的这样的整数:一些相续正整数的立方和正好等于另一个整数的立方。*/

#include <stdio.h>
#define N 1200 //大于1200后就快越界了

int main(void)
{
    int x[N];
    long sum = 0;
    for (int i = 0; i < N; i++)// 把0到N之间的的数的3次方赋值到对应下标的数组内,以提高运算速度
        x[i] = i * i * i;
    for (int i = 2; i < N; i++)//作为数组下标
        for (int j = 1; j < i; j++)//作为开始算的最小值
            for (int k = j; k < i; k++)//不断提高最左边值
            {
                sum += x[k];
                if (sum == x[i])
                {
                    printf("%d^3 + ...... + %d^3 = %d^3\n", j, k, i);
                    sum = 0;
                    break;
                }
                if (sum > x[i])//当前面的整数和大于目标值,中断循环以提高效率
                {
                    sum = 0;
                    break;
                }
            }

    return 0;
}


----------------------上面的算法有问题,更正为下面的------------------------------

程序代码:
#include <stdio.h>
#define N 5000 

int main(void)
{
    long x[N];
    long sum = 0;
    for (int i = 0; i < N; i++)// 把0到N之间的的数的3次方赋值到对应下标的数组内,以提高运算速度
        x[i] = i * i * i;
    for (int i = 2; i < N; i++)//作为数组下标
        for (int j = 1; j < i; j++)//作为开始算的最小值
            for (int k = j; k < i; k++)//不断提高最左边值
            {
                sum += x[k];
                if (sum == x[i])
                {
                    printf("%d^3 + ...... + %d^3 = %d^3\n", j, k, i);
                    sum = 0;
                    break;
                }
                if (k + 1 == i)// 修改了这里
                {
                    sum = 0;
                    break;
                }

            }

    return 0;
}


[此贴子已经被作者于2017-9-25 10:26编辑过]

搜索更多相关主题的帖子: 整数 立方 int sum for 
2017-09-23 16:03
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
得分:0 
回复 2楼 九转星河
并不是都从1开始,所以不能套用这个公式,比如3的立方+4的立方+5的立方 = 6的立方
2017-09-23 21:52
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
得分:0 
回复 4楼 九转星河
有道理啊,是一个新思路,我想想怎么写一下。不过时间复杂度应该是一样的
2017-09-24 16:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480892-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.358359 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved