JAVA 求连数相加

woainiyanrong 2009-10-22 01:27:56
随便给出一个整数 算出 给出的这个数 所有 相加起来的数 等于这个数 并且相加的数 要连续起来
如: 7+8=15,4+5+6=15,1+2+3+4+5=15
...全文
165 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
悠忧虫 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sunlotus0 的回复:]
Java codepublicclass Test {publicstaticvoid main(String[] args) {

Test t=new Test();
t.translate(100);

}publicvoid translate(int n) {int flag=0, start=0, temp= start, end= start;¡­
[/Quote]
2^n(n=0,1,2,...)都不能分解成连数相加的形式...
r4141496091 2009-10-26
  • 打赏
  • 举报
回复
如果负数也算的话,那么你原来的15可以拆成无限种可能,比如-3 -2 -1 0 1 2 3 4 5 6
r4141496091 2009-10-26
  • 打赏
  • 举报
回复
好像你个题目有bug的,比如16就不可以找连续的整数表示,除非负数也算
悠忧虫 2009-10-26
  • 打赏
  • 举报
回复


public class Test {

public static void main(String[] args) {

Test t = new Test();
t.translate(100);

}

public void translate(int n) {
int flag = 0, start = 0, temp = start, end = start;
if (n <= 0) {
System.out.println("请输入正整数!");
} else {
while (start < (n / 2) + 1) {
if (temp == n) {
System.out.print(temp + "=");
for (int i = start; i <= end; i++) {
if (i != 0) {
if (i != end) {
System.out.print(i + "+");
} else {
System.out.println(i);
}
}
}
start++;
flag = 1;
end = start + flag;
temp += end;
} else if (temp > n) {
start++;
flag = 1;
end = start + flag;
temp = start;
} else {
end = start + flag;
flag++;
temp += end;
}
}
}
}

}
woainiyanrong 2009-10-22
  • 打赏
  • 举报
回复
。。。。。
amdgaming 2009-10-22
  • 打赏
  • 举报
回复
最上面我的回复。。
amdgaming 2009-10-22
  • 打赏
  • 举报
回复
看我的回复啊,晕 还不结贴
woainiyanrong 2009-10-22
  • 打赏
  • 举报
回复
我说的是 连数相加。。。。。。
flysky305 2009-10-22
  • 打赏
  • 举报
回复

double num = ?;
int end = (int)(Math.ceil(num/2));
for(int i = end; i>0; i--)
{
int sum=0;
String str="";
for(int j=i; j>0;j--)
{
sum += j;
str += j + "+";
if(sum == num)
{
System.out.println(str.substring(0,str.length()-1)+"="+(int)num);
}
else if(sum > num)
{
break;
}
}
}

修改了下楼上的
ctwei86 2009-10-22
  • 打赏
  • 举报
回复
没有编译器,代码全手写,可能会有点错。
思路是从这个数的半数(要向上取整)开始算起,然后逐个往下递减。

int end = Math.Ceiling(num);
for(int i = end; i>0; i--)
{
int sum=0;
string str="";
for(int j=i; j>0;j--)
{
sum += j;
str += j + "+";
if(sum == num)
{
System.out.println(str.subString(0,str.length()-1)+"="+num;
}
else if(sum > num)
{
break;
}
}
}
tanwan 2009-10-22
  • 打赏
  • 举报
回复
for(int i=1;i<n;i++)
{
for(int j=i;j<n;j++)
{
//sum如果小于则继续累加,大于则表示break了。。等于就可以输出
}
}
zhuzeitou 2009-10-22
  • 打赏
  • 举报
回复
这个问题最近似乎出现频率很高唉……
amdgaming 2009-10-22
  • 打赏
  • 举报
回复
去看看这个帖子 我的回复

http://topic.csdn.net/u/20091017/17/8e8a4e7d-160c-4cf7-969d-72fb92cfb414.html
内容概要:本文围绕分布式电源接入对配电网的影响展开研究,利用Matlab进行建模仿真与代码实现,系统分析了分布式电源(如光伏、风电等)接入后对配电网在电能质量、潮流分布、电压稳定性、保护配置等方面的影响。研究涵盖了多种分布式电源类型与不同渗透率场景,通过构建典型的配电网模型,仿真其在正常运行及故障条件下的动态响应特性,重点探讨了分布式电源引起的电压越限、反向潮流、短路电流水平变化等问题,并提出了相应的优化调控策略与解决方案。同时,结合主动配电网的有功无功协调优化、鲁棒调度等高级应用,展示了如何借助现代优化算法提升系统接纳能力与运行经济性。; 适合人群:具备电力系统基础知识,熟悉Matlab/Simulink仿真环境,从事新能源接入、配电网规划与运行等相关领域的科研人员、工程师及高校研究生。; 使用场景及目标:①掌握分布式电源接入对配电网关键指标的影响机制;②学习基于Matlab的配电网建模与仿真方法;③理解并实现主动配电网的协调优化调度算法;④为实际工程中分布式电源并网方案设计与问题诊断提供理论支持和技术参考。; 阅读建议:建议读者结合文中提供的Matlab代码,逐步复现仿真案例,深入理解模型构建与算法实现细节,并尝试在不同参数设置或网络结构下进行拓展实验,以增强对系统动态行为的认知与分析能力。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧