题目:
任何一个自然数m的立方均可写成m个连续奇数之和。
例如: 1^3=12^3=3+5
3^3=7+9+114^3=13+15+17+19
编程实现:输入一自然数n,求组成n3(立方)的n个连续奇数
分析:
先找到平衡点,平衡点是n的平方(n*n);
n为奇数时,结果包含平衡点;结果:...n-6,n-4,n-2,n,n+2,n+4,n+6...
特殊的是中间3个数:n-2,n,n+2
n为偶数时,结果不包含平衡点;结果:...n-5,n-3,n-1,n+1,n+3,n+5...
特殊的是中间的2个数:n-1,n+1
处理好中间特殊的数时,计算两边的数就容易了;见如下代码:
//找到奇数并打印出
public static void findOdd(int n){
List ret=new ArrayList();
if(n<0){
ret.add(0);
}else if(n==1){
ret.add(1);
}else{
int tempSum=n*n;
//计算平方
int toAdd=tempSum;
int toSub=tempSum;
if(tempSum%2==1){ //是奇数,说明是平衡点
toAdd+=2;
//此处加减2
toSub-=2;
ret.add(tempSum);
//先添加这个奇数
}else {
toAdd+=1;
//此处加减1
toSub-=1;
}
for(int i=0;
iret.add(toAdd);
ret.add(toSub);
toAdd+=2;
toSub-=2;
}
}
Object[] tempRet=ret.toArray();
Arrays.sort(tempRet);
for(int i=0;
iSystem.out.print(tempRet[i]+" ");
}
}
有其他想法的同学可以一起讨论.
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)