找出一定范围内多个连续整数,使其立方之和恰好等于另一个整数的立方

题目如图,关于这道题的第一问比较简单,只需验证式子两边是否相等即可。这里主要做一下第二问。

 此题要求找出多个连续整数的立方和使其恰好等于另一个整数的立方,因为并没有明确给出相应的条件,比如起始项,项数等,所以找出所有结果并不现实。故将起始项a范围定位1~1000,项数n<=1000。

具体的实现思路很简单,先由两个for循环分别确定起始项和项数,通过立方和公式(此公式可自行推导)求出从a~a+n-1立方和,将其和取立方根,得到的立方根再取立方与立方和比较,若相同则输出。

关于代码中出现的立方和公式,当然可以通过建立一个循环求立方和,此处为了提高效率,故采用了公式。

 1 public static void main(String[] args) {
 2     long sum=0,cbrtSum=0;
 3     for(long a=1;a<=1000;a++){
 4         for(long n=2;n<=1000;n++){
 5           /*此为求从起始项到结束项的立方和公式*/
 6             sum=n*a*a*a+((n*(n-1))>>1)*(3*a*a+((n<<1)-1)*a+((n*(n-1))>>1));
 7             cbrtSum=(long)Math.cbrt(sum);
 8             if((long)Math.pow(cbrtSum, 3)==sum){
 9                 System.out.println(a+"^3+...+"+(a+n-1)+"^3="+cbrtSum+"^3");
10             }
11          }
12      }
13      System.out.println("Finished");
14 }

运行结果:

时间: 2024-10-11 13:14:16

找出一定范围内多个连续整数,使其立方之和恰好等于另一个整数的立方的相关文章

c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?

找出1到4000中,数字的各位数之和能被4整除的数,如:745:7+4+5=16,16可以被4整除:28:2+8=10,10不能被4整除:745就是这样的特殊数字,而28不是,求:这样的数字共有多少个? 解: (1)对于4000,4+0+0+0=4,显然4000是满足条件的数字: (2)对于1到3999,我们把每个数字看成4位[][][][]的形式,第一位[]取0到3,后3位取[0][0][0]到[9][9][9],用sum表示4位数字的和: 2.1:若后3位为一个奇数,则第1位取1或3,必定可

找出2个数组相同的项,并将其保存在另外一个数组中

#include <stdio.h> //找出2个数组相同的项,并将其保存在另外一个数组中 int main(){ int buf1[]={1,2,3}; int buf2[]={2,3,4}; int des[3]; int count=0; for(int i=0;i<sizeof(buf1)/sizeof(int);i++) //遍历buf1 { for(int j=0;j<sizeof(buf2)/sizeof(int);j++) //遍历buf2 { if(buf1[i]

找出1小时内占用cpu最多的10个进程的shell脚本

cpu时间是一项重要的资源,有时,我们需要跟踪某个时间内占用cpu周期最多的进程. 在普通的桌面系统或膝上系统中,cpu处于高负荷状态也许不会引发什么问题.但对于需要处理大量请求的服务器来讲,cpu是极其重要的资源. 通过监视某个时期内cpu的使用情况,我们可以找出长期占用cpu的进程并对其进行优化,或调试其它相关问题. 在linux系统中,ps命令用于收集系统中进程的详细信息.这些信息包括cpu使用情况.正在执行的命令.内存使用.进程状态等.记录在一个小时内占用过的cpu的进程,然后通过恰当地

【Todo】找出一定距离内相差距离有效的情况

原题: https://leetcode.com/problems/contains-duplicate-iii/?tab=Description Given an array of integers, find out whether there are two distinct indices i and j in the array such that the absolute difference between nums[i] and nums[j] is at most t and

找出给定数组内有多少重复的数,并打印它们对应的位置。

local t = {1, 7, 2, 5, 4, 9, 9, 7, 2, 2, 2, 5, 5} function seekNum(t) local dic_count = {} local dic_pos = {} for i=1,#t do if dic_count[tostring(t[i])] == nil then dic_count[tostring(t[i])] = 1 else local index = table.indexOf(t, t[i]) dic_count[tos

找出给定数组的子数组,该子数组和恰好为给定目标数t----动态规划/递归/搜索(待完成)

编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true:不满足时返回false. 输入描述: 第一行是数据个数,第二行是输入的数据 输出描述: 返回true或false 输入例子: 4 1 5 -5 1 输出例子: true v1=int(raw_input()) v2=raw_input().split(' ') v2=map(int,v2) a=

一组成对的数字,找出不成对的数字

题面描述 有一个卡组,卡组中所有不同的卡牌都有两张.不小心遗失了一张,找出遗失的是哪张卡牌. 输入数据 输入数据的第一行为一个整数 T(1 <= T <= 10) ,表示有 T 组测试数据.每组数据的第一行为一个整数 n(2 <= n <=100000) , n 为偶数,表示一个卡组中卡牌的数量.接下来的一行有 n - 1 个整数,为剩余牌的编号,其中相同牌的编号相同,不同牌的编号不同. 输出数据 对于每组数据,在单独的一行中输出结果,为滑落牌的编号,格式见样例. 样例输入 221

JVM调优之jstack找出最耗cpu的线程并定位代码

一.jstack使用总结 分析java进程,cpu占用高的问题 { 1.找到cpu占用高的进程pid 在top中,按组合键: shift + h ,会按cpu使用从高到低排序2.找到cpu占用高的线程pid top -Hp cpu高的进程pid, shift +h 查找最高线程,显示线程3.jstack 进程的pid | grep -A 线程pid的十六进制 #分析Java应用程序线程堆栈dump出来 printf "%x\n" cpu高的线程pid ==> 得到十六进制 pyt

编程实例--for循环,找出0~100之间与8有关的正整数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><style type="text/css"&g