神奇的 int128(幕乘 大mod

2021-10-25 04:54:20 字數 1310 閱讀 3259

今天去做了幾道簽到題,發現自己的幕乘居然有問題

我的幕乘板子:

#include

#include

#include

typedef

unsigned

long

long llong;

using

namespace std;

llong mod_pow

(llong x,llong n,llong mod)

return res;

}int

main()

}

這道題和以前的不同,mod 太大了,快有1e11了,用上面的**會發現2的63以上都是0,然後發現是因為(a * a)%mod的問題,因為mod比較大所以a * a結果可能會溢位,結束的時候看見別人用的__int 128來存放a,這樣a * a 就不會溢位因為還要mod9999999967。

下面是改進**:

#include

#include

#include

typedef

unsigned

long

long llong;

using

namespace std;

llong mod_pow

(llong x,llong n,llong mod)

return res;

}int

main()

}

20級的學弟學妹們來了,實驗室裡可憐弱小又無助的wzc學弟終於變成了學長,可以壓迫下一級了(?)。

但是wzc學長苦於自己的實力進步太慢,很擔心自己在學弟學妹們面前丟人,所以天天熬夜在實驗室裡訓練。

某一天wzc學長訓練得實在太累了,居然在大白天做起了夢。

在夢裡面,wzc學長在第一天有乙個初始的碼力值x,第二天的時候碼力值變為了x2,第三天的時候碼力值變為了x3…第i天的時候碼力值變為了xi。

現在wzc學長想知道第i天的時候,他的碼力值是多少。由於這個值可能非常大,請輸出對9999999967取模的結果。

輸入描述:

第一行乙個整數t,代表輸入資料組數。(1≤t≤1×103)

接下來t行,每行兩個整數x和i,代表第一天的初始碼力值,和所要求的是第幾天的碼力值。

(1≤x≤10,不會吧不會吧,不會真的有人這麼弱吧)

(1≤i≤1×109)

輸出描述:

輸出t行,每行乙個整數,代表xi對9999999967取模的結果。

示例12

1 1000000000

2 31

8

int128 學習筆記

今天學習到 int128 型別 這是乙個處理大數的很奇妙的方法。正常來說,unsigned long long 已經是可以定義的最大的型別了,但是如果資料範圍超過了2 64 就會 如果要處理比其大一點又不是那麼大的數,就可以使用 int128這個定義。注意 int128 並不是所有編譯器都可以使用。...

直線 int128的使用

題目 平面上存在n 1e15 條直線。請問n條直線在平面上最多存在多少交點。解法 分析可知資料範圍會爆64位但又在128位以內,使用 int128。int128有定義但沒有輸入輸出等操作,需要手寫。include include include include include include inc...

組合數學 int128

今天是tabris和mengxiang000來到幼兒園的第3天,mengxiang000接到了乙個布置會場的任務。他需要將貴賓觀眾席的椅子排成一排,一共需要n個。幼兒園只有兩種椅子,所以他也只能使用兩種椅子。a型別和b型別 並且假設每種椅子的數量都是無限的。而其如果想要擺置乙個b型別的椅子,對應就需...