| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4763 人关注过本帖
标题:找到更多的这样的整数:一些相续正整数的立方和正好等于另一个整数的立方。
取消只看楼主 加入收藏
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
快速回复:找到更多的这样的整数:一些相续正整数的立方和正好等于另一个整数的立 ...
数据加载中...
 
   



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

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