| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 500 人关注过本帖
标题:用到这个,才觉得数学没学好是这样的痛苦!这个要怎么样弄?(已解决)
只看楼主 加入收藏
史前大暴龙
Rank: 1
等 级:新手上路
帖 子:375
专家分:0
注 册:2005-11-22
收藏
 问题点数:0 回复次数:2 
用到这个,才觉得数学没学好是这样的痛苦!这个要怎么样弄?(已解决)
请问一下,我有一系列的数,全是2的次方,开始的数为1,2,4,8,16,32,64,128,256,512,1024,2048.....
随便给一个由那些数中某几个数的和,那我要怎么样才知道是由哪几个数加的啊??
例如:
给一个数是:6,我就要得到2和4
给一个数是:49,我就要得到是由:1,16,和32
救命啊!!!!

[此贴子已经被作者于2007-4-17 15:58:17编辑过]

搜索更多相关主题的帖子: 数学 
2007-04-17 15:49
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

思路大致如下

初始化 a(i) = 2的i次方


当 A 不等于 0
找到对应数字A的 a(i)的最接近的一个值 但是这个值不能比A大
A = A -a(i)
循环

把循环中的a(i)记录下来 就是你要的数列


2007-04-17 16:04
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
我这里有一种方法,可能有点复杂,但是功能还是实现了的.呵/

[CODE]
using System;
using System.Collections.Generic;
using System.Text;

namespace caMath
{
class Program
{
static int n = 0;
static int FiNum = 1;
static void Main(string[] args)
{
int inputNum;
while (true)
{
Console.WriteLine("请输入一个数字:");
try
{
inputNum = Convert.ToInt32(Console.ReadLine());
n = 0;
checkNum(inputNum);
Console.WriteLine("{0} 包含的数有:",inputNum);

for(int i = 0 ;i < n ;i++)
{
FiNum = 1;
checkNum(inputNum);
inputNum -= FiNum;

if (inputNum == 0)
{
Console.WriteLine("{0}", FiNum);
break;
}
else if (inputNum != 1 || inputNum != 2)
{
Console.WriteLine("{0}", FiNum);
}
}
}
catch
{
Console.WriteLine("只能输入数字,谢谢!\r\n");
}
}
}
static void checkNum(int num)
{
if (num % 2 == 0)
{
if (num != 0)
{
num /= 2;
n++;
FiNum *= 2;
checkNum(num);
}
}
else
{
checkNum(num - 1);
}
}
}
}

[/CODE]

飘过~~
2007-04-17 17:08
快速回复:用到这个,才觉得数学没学好是这样的痛苦!这个要怎么样弄?(已解决)
数据加载中...
 
   



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

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