排列與二進位制

2021-10-06 08:29:41 字數 868 閱讀 9305

題目描述

在組合數學中,我們學過排列數。從n個不同元素中取出m(m<=n)個元素的所有排列的個數,叫做從n中取m的排列數,記為p(n, m)。具體計算方法為p(n, m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)! (規定0!=1).當n和m不是很小時,這個排列數是比較大的數值,比如 p(10,5)=30240。如果用二進位制表示為p(10,5)=30240=( 111011000100000)b,也就是說,最後面有5個零。我們的問題就是,給定乙個排列數,算出其二進位制表示的後面有多少個連續的零。

輸入描述:

輸入包含多組測試資料,每組測試資料一行。

每行兩個整數,n和m,0輸出描述:

對於每個輸入,輸出排列數p(n, m)的二進位制表示後面有多少個連續的零。每個輸出放在一行。

示例1輸入

10 5

6 10 0輸出5

1題目解析:n! / (n-m)! = (n-m+1)!,求階乘結果的二進位制0的個數,就是求能被2整除幾次

**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

// n! / (n-m)! = (n-m+1)!,求階乘結果的二進位制0的個數,就是求能被2整除幾次

intmain()

} cout << count << endl;

}return0;

}

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

JAVA與二進位制

system.out.println 51 7 如上 的結果是 3 答案 00000000 00000000 00000000 00110011 00000000 00000000 00000000 00000111 2進製 計算機內部 只有 2進製資料。任何資訊都必須轉換為2進製,再由計算機處理。...

二進位制與bitset

運算子 與 and 1 1 1 0 1 0 1 0 0 0 0 0 或 or 1 1 1 0 1 1 1 0 1 0 0 0 異或 xor 1 1 0 0 1 1 1 0 1 0 0 0 非 not 1 0 0 1 邏輯移位 邏輯左移 x y 把x的每個二進位制位向左移動y位,移動造成的最右邊空位由...