难题,数学问题!

xwy2258588 2003-09-09 11:02:36
请问一下:2^x + 2^y + … +2^z = sum
sum是知道的
求x, y...z的值
...全文
34 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjhphc 2003-09-09
  • 打赏
  • 举报
回复
列举法,解不唯一
ga3ga3 2003-09-09
  • 打赏
  • 举报
回复
我想应该先做 2^n <sum
得出n最大值,也就是x,y,z 最大值
然后就列举吧
x=0 to n...
y= 0 to n ...
z = 0 to n...
loulanlouzhu 2003-09-09
  • 打赏
  • 举报
回复
简单的就列举法!
delphi_bird 2003-09-09
  • 打赏
  • 举报
回复
好久没碰数学题了,公式都忘了,无能为力!
edobnet 2003-09-09
  • 打赏
  • 举报
回复
用计算机实现是不可以的,计算机只能正着来,不可以反进来求!
xwy2258588 2003-09-09
  • 打赏
  • 举报
回复
没人会吗
xwy2258588 2003-09-09
  • 打赏
  • 举报
回复
x,y...z的值是不同的
jjcccc 2003-09-09
  • 打赏
  • 举报
回复
哦,打错了一个符号,否则就是死循环了:
上面代码中while((r=(sum-2^m))>=0 改为 while((r=(sum-2^m))!=0)
xwy2258588 2003-09-09
  • 打赏
  • 举报
回复
同意jjcccc()
jjcccc 2003-09-09
  • 打赏
  • 举报
回复
另附一个GetMax函数:

public int GetMax(int sum)
{
int i=0;
while (true)
{
sum = sum - sum/2
if (sum>0)
i++;
else
break;
}
}
jjcccc 2003-09-09
  • 打赏
  • 举报
回复
补充:上面代码中的SUM就是已知的和。另GetMax函数也容易写。所以其实是个简单的算法问题。可能还有更好的方法。
jjcccc 2003-09-09
  • 打赏
  • 举报
回复
int sum=SUM;
int n,m;
int r;
ArrayList result;

m=GetMax(sum);//Getmax(sum):求出2^m<=sum并sum最大的值
while((r=(sum-2^m))>=0
{
result.Add(m);
sum=r;
m=GetMax(sum);
}

//输入result的结果就是x,y,...z
standy 2003-09-09
  • 打赏
  • 举报
回复
只能列举了
Inyoureyes 2003-09-09
  • 打赏
  • 举报
回复
sorry,看翻了,不是球面。但是没有约束还是解不出来
howbigsea 2003-09-09
  • 打赏
  • 举报
回复

这样做:
假设x<y<z(因为x,y,z为变量,且不相同,这样总可以的)
int x=0;
while(sum%2==0)
{
sum=sum/2;
x++;
}
如此,求出的x即为所求。
然后y,z求法与次类同
Inyoureyes 2003-09-09
  • 打赏
  • 举报
回复
很明显,所有解在空间构成一个以sqrt(sum)为大圆半径的球面,解的个数肯定和你要求的x,y,z所在象限(取值范围)和取值精度有很大关系。应该还有一些约束方程没给出来,不然的话这个方程确定的解是无穷的
xwy2258588 2003-09-09
  • 打赏
  • 举报
回复
up

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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