階乘二進位制表示末尾1的位置

2021-10-11 02:52:42 字數 840 閱讀 7349

階乘二進位制表示末尾1的位置

給定乙個非負整數n,如果用二進位制數表達n!的結果,返回最低位的1在哪個位置上,認為最右的位置為位置0。

輸入描述:

第一行乙個整數n。

輸出描述:

輸出乙個整數表示答案

示例1輸入

1
輸出
0
說明
1! = 1,最低位的1在0位置上
示例2

輸入

2
輸出
1
說明
2 != 2,最低位的1在1位置上
示例3

輸入

1000000000
輸出
999999987
備註:

1 ⩽n

⩽1018

1 \leqslant n \leqslant 10^

1⩽n⩽10

18題解:

與階乘末尾 0 的個數相似,最低位的 1 出現在哪個位置,取決於 1~n 的數中有多少個因子 2 ,因為每出現乙個因子 2 ,最低位的 1 都會左移一位。

**:

#include

using

namespace std;

typedef

long

long ll;

intmain

(void

)return0*

printf

("%lld\n"

, ret)

;}

1的二進位制表示

我們已經知道計算機中,所有資料最終都是使用二進位制數表達。我們也已經學會如何將乙個10進製數如何轉換為二進位制數。不過,我們仍然沒有學習乙個負數如何用二進位制表達。比如,假設有一 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 000...

LintCode 二進位制表示

給定乙個數將其轉換為二進位制 均用字串表示 如果這個數的小數部分不能在 32 個字元之內來精確地表示,則返回 error 樣例 n 3.72 返回 error n 3.5 返回 11.1 題目很簡單,直接上 吧 public class binaryrepresention return res.r...

LintCode 二進位制表示

給定乙個數將其轉換為二進位制 均用字串表示 如果這個數的小數部分不能在 32 個字元之內來精確地表示,則返回 error 您在真實的面試中是否遇到過這個題?yes 樣例n 3.72 返回 error n 3.5 返回 11.1 好久沒做題 有點懵逼 根據資料試出來的 臥槽 public class ...