題意很簡單吧;
就是算c(n,k)和1e18的大小;
如果你手寫一下就可以把c(n,m)寫成:
可以很明顯發現分子最左邊的n-k可定小於分母最後邊的n-k+1;
所以他們能相同約分;
然後就有乙個new知識點了!!__int128這個是只能在計算時使用的資料型別,不能在輸入輸出的時候使用;
所以這道題我就可以這樣想:
如果我從[1,k]去列舉,那麼肯定就是這樣列舉滴:
如果我連乘算出來之後》=1e18,那麼肯定不用往後算了;直接就知道和1e18的大小了;
為什麼會有這種思路呢?
因為你可以算算20!是多少,emmm…大概是2e18;所以這樣列舉就是乙個常熟級別的列舉;肯定不會t;
所以就這樣寫了
ac**:
#include
using namespace std;
typedef
long
long ll;
typedef __int128 ll;
ll n,k;
const ll m=
1000000000000000000ll
;//這種資料型別用於 中間和ll配合計算
intmain()
} cout<
}return0;
}
組合數學 int128
今天是tabris和mengxiang000來到幼兒園的第3天,mengxiang000接到了乙個布置會場的任務。他需要將貴賓觀眾席的椅子排成一排,一共需要n個。幼兒園只有兩種椅子,所以他也只能使用兩種椅子。a型別和b型別 並且假設每種椅子的數量都是無限的。而其如果想要擺置乙個b型別的椅子,對應就需...
int128 學習筆記
今天學習到 int128 型別 這是乙個處理大數的很奇妙的方法。正常來說,unsigned long long 已經是可以定義的最大的型別了,但是如果資料範圍超過了2 64 就會 如果要處理比其大一點又不是那麼大的數,就可以使用 int128這個定義。注意 int128 並不是所有編譯器都可以使用。...
直線 int128的使用
題目 平面上存在n 1e15 條直線。請問n條直線在平面上最多存在多少交點。解法 分析可知資料範圍會爆64位但又在128位以內,使用 int128。int128有定義但沒有輸入輸出等操作,需要手寫。include include include include include include inc...