社区
数据结构与算法
帖子详情
怎么样正整数分解成2的n次方的和?
dongyi940333
2006-10-16 08:14:32
任意一个正整数,都可以分解成2的n次方的和(不知道数学上的叫法是什么?)
如:
func(1) = 2的0次
func(2) = 2的1次
func(3) = 2的1次+2的0次
func(65) = 2的6次+2的0次
请问各位这个算法的具体实现?谢谢
...全文
1320
15
打赏
收藏
怎么样正整数分解成2的n次方的和?
任意一个正整数,都可以分解成2的n次方的和(不知道数学上的叫法是什么?) 如: func(1) = 2的0次 func(2) = 2的1次 func(3) = 2的1次+2的0次 func(65) = 2的6次+2的0次 请问各位这个算法的具体实现?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
williamwhy
2006-10-27
打赏
举报
回复
怎么是十进制和2进制的转化
phidix
2006-10-25
打赏
举报
回复
大概就这样
func(int n)
{
int mask=1;
int temp=0;
int i=0;
while(n>0)
{
printf("%d=%d*2^%d",n,n&mask,i);
n>>1;
i++;
}
return;
}
39457760
2006-10-19
打赏
举报
回复
估计楼主是头一回碰到这样的问题
jxhlyy_3616
2006-10-18
打赏
举报
回复
将10进制数转化为2进制数你应该会吧。
jxhlyy_3616
2006-10-18
打赏
举报
回复
上面的改一下:
{先将10进制数转化为2进制的数。如:65=1000001。然后输出+1*2^6+0*2^5+0*2^4+0*2^3+0*2^2+0*2^1+1*2^0。
这样就可以转化了}
jxhlyy_3616
2006-10-18
打赏
举报
回复
先将10进制数转化为2进制的数。如:65=01000001。然后输出0*2^7+1*2^6+0*2^5+0*2^4+0*2^3+0*2^2+0*2^1+1*2^0。
这样就可以转化了。
yelling
2006-10-17
打赏
举报
回复
直接读每一个BIT好了
csucj
2006-10-17
打赏
举报
回复
up!
mu_yang
2006-10-17
打赏
举报
回复
HUNTON(追求完美) :
大意了.
你对!谢谢指正!
HUNTON
2006-10-17
打赏
举报
回复
mu_yang(穆扬)说的不对吧,“m(m为任意整数)的n次方的和”这里的m(m为任意整数)的n次方是有系数(小于m)的,不是就和而已。
captain_x
2006-10-17
打赏
举报
回复
数论
WizardOz
2006-10-17
打赏
举报
回复
跟把它转换成二进制一样的意思
除二取余
mu_yang
2006-10-16
打赏
举报
回复
任意一个正整数,都可以分解成2的n次方的和(不知道数学上的叫法是什么?)
----------------------------------------
不就是二进制吗
我还可以告诉你
任意一个正整数,都可以分解成m(m为任意整数)的n次方的和,最多再加上一个小于m的数
def000
2006-10-16
打赏
举报
回复
反复的除以2,记录余数,直到被除数为零中止。比如13
第1次 13/2 = 6 余 1 => 13 = 2*6 + 1
第2次 6/2 = 3 余 0 => 13 = 2*(2*3 + 0) + 1
第3次 3/2 = 1 余 1 => 13 = 2*(2*(2*1 + 1) +0) + 1
第4次 1/2 = 0 余 1 => 13 = 2*(2*(2*(0*2 + 1) + 1) + 0) + 1
最后,第i次的余数就是2^(i-1)项的系数:
13 = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3
Leaveye
2006-10-16
打赏
举报
回复
计算机里存储数字都是一个个的 bit ,你的问题只是在问,这些 bits 都是几而已。
在 C/C++ 里,可以直接用移位运算(“<<”/“>>”)。
整数划分问题 将
正
整数n表示
成
一系列
正
整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。
Description 将
正
整数n表示
成
一系列
正
整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。
正
整数n的这种表示称为
正
整数n的划分。求
正
整数n的不同划分个数。 例如
正
整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+1。 Input 输入包含n+1行; 第一行是一个整数n,表示有n个测试用例; 第2至n+1每行一个
正
整数。 Output 对应每组输入,输出
正
整数n的不同划分个数。 Sample Input 2 5 6 Sample Output 7 11
Integer Factorization-参考代码
Integer Factorization Time Limit:3000MS Memory Limit:65536K Total Submit:359 Accepted:222 Description 问题描述: 大于1 的
正
整数n可以分解为:n=X1*X2*…*Xm。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6*2; 12=4*3; 12=3*4; 12=3*2*2; 12=2*6; 12=2*3*2; 12=2*2*3。 编程任务: 对于给定的
正
整数n,编程计算n共有多少种不同的分解式。 Input 输入由多组测试数据组
成
。 每组测试数据输入第一行有1 个
正
整数n (1≤n≤2000000000)。 Output 对应每组输入,输出计算出的不同的分解式数。 Sample Input 12 Sample Output 8
整数的特殊划分
★问题描述: 给定一个
正
整数N,将其分解为若干个整数
的和
,且这些整数都是2的 k
次方
(k>=0), 请问共有多少种分解方法? 例如,对于整数5,有 5=1+1+1+1+1; 5=1+1+1+2; 5=1+2+2; 5=1+4 共4种分解方法。 对于整数8,有 8=1+1+1+1+1+1+1+1; 8=1+1+1+1+1+1+2; 8=1+1+1+1+2+2; 8=1+1+2+2+2; 8=2+2+2+2; 8=1+1+1+1+4; 8=1+1+2+4; 8=2+2+4; 8=4+4; 8=8 共10种分解方法。 输入格式 每组输入数据仅包含一个整数 N (1 <= N <= 10000)。 注意:这里原来题目是1 <= N <= 100000,现在改为:1 <= N <= 10000 输出格式 输出一个整数M。M为分解方法数,由于M可能很大,请输出 M00000000。 输入样例 5 输出样例 4
c#把一个
正
整数拆分
成
2的n
次方
和
c#把一个
正
整数拆分
成
2的n
次方
和 public static void Func(long input) { long m = 1; for (int i = 1; i < 64; i++) { if ((m & input) == m) { Console.WriteLine(m
将一个
正
整数分解
为m个2的n
次方
的和
-- ============================================= -- Author: <maco_wang> -- Create date: <2011-01-21> -- Description: <将一个
正
整数分解
为m个2的n
次方
的和
> -- ====================================...
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章