如何从只包含两个不同数字的某个数字中获取组合数?

Srd*_*ica 4 delphi combinations numbers

例如,两位数字有4种组合:11,12,21,22.三位数字有8种组合:111,112,... 222.

  • 如何获得具有4,5,... 10或更多位数的数字组合?

谢谢

PS这是指Delphi :)

And*_*and 15

答案是2 N,其中N是数字位数.

这是一个纯数学问题,涉及非常基本的组合学.很容易理解为什么2 N是正确的答案.实际上,有两种方法可以选择第一个数字.对于每个这样的选择,有两种方法可以选择第二个数字.因此,有2×2种方式来选择两位数字.对于每个这样的数字,有两种方法可以添加第三个数字,使用2×2×2种方法来构建一个三位数字.因此,有

2 × 2 × ... × 2 = 2^N
Run Code Online (Sandbox Code Playgroud)

构建N位数的方法.

在Delphi中,您通过()计算2 N. [一种不太天真的方式,适用于N <31,是.]Power(2, N)uses Math1 shl N