快速冪 轉圈問題

2021-09-25 16:11:29 字數 727 閱讀 7815

n 個小夥伴(編號從 0 到 n-1)圍坐一圈玩遊戲。按照順時針方向給 n 個位置編號,從0 到 n-1。最初,第 0 號小夥伴在第 0 號位置,第 1 號小夥伴在第 1 號位置,……,依此類推。

遊戲規則如下:每一輪第 0 號位置上的小夥伴順時針走到第 m 號位置,第 1 號位置小夥伴走到第 m+1 號位置,……,依此類推,第n − m號位置上的小夥伴走到第 0 號位置,第n-m+1 號位置上的小夥伴走到第 1 號位置,……,第 n-1 號位置上的小夥伴順時針走到第m-1 號位置。

現在,一共進行了 10k 輪,請問 x 號小夥伴最後走到了第幾號位置。

輸入共 1 行,包含 4 個整數 n、m、k、x,每兩個整數之間用乙個空格隔開。

對於 30% 的資料,0對於 80% 的資料,0對於 100% 的資料,1輸出共 1 行,包含 1 個整數,表示 10k 輪後 x 號小夥伴所在的位置編號。

10 3 4 5
5
這題公式就是(x+m*(10^k%n)%n)%n;然後套模板就可以了。

#includeusing namespace std;

#define ll long long

ll quickpow(ll a,ll b,ll m)

else }

int main()

{ ll n,m,k,x;

cin>>n>>m>>k>>x;

cout<<(x+m*quickpow(10,k,n)%n)%n<

轉圈遊戲(快速冪的運用)

先上題 n 個小夥伴 編號從 0 到 n 1 圍坐一圈玩遊戲。按照順時針方向給 n 個位置編號,從0 到 n 1。最初,第 0 號小夥伴在第 0 號位置,第 1 號小夥伴在第 1 號位置,依此類推。遊戲規則如下 每一輪第 0 號位置上的小夥伴順時針走到第 m 號位置,第 1 號位置小夥伴走到第 m ...

快速冪問題

所謂的快速冪,實際上是快速冪取模的縮寫 首先,最基本的辦法是 int ans 1 for int i 1 i b i ans ans c ans是對answer的縮寫但是如果a很大,那麼a b的結果就容易非常大,所以在求之前可以先對a做乙個變化 如下 int ans 1 a a c 加上這一句 fo...

快速冪問題

求冪方法 pow函式 也就是平常使用pow函式,最簡單的實現就是一直累乘,可以得到這樣的 123 4567 int pow int a,int n return ans 快速冪取模 根據同餘定理,我們知道 ab m a m b m m 其實快速冪取模也是用到這個定理,那麼根據上面的定理可以推導出另乙...