NOIP2013 轉圈遊戲

2021-07-10 20:51:03 字數 1147 閱讀 7063

1.轉圈遊戲

(circle.cpp/c/pas)

【問題描述】

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 號位置。

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

【輸入】

輸入檔名為 circle.in。

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

【輸出】

輸出檔名為 circle.out。

輸出共 1 行,包含 1 個整數,表示 10k 輪後 x 號小夥伴所在的位置編號。

【輸入輸出樣例】

circle.in

circle.out

10 3 4 55

【資料說明】

對於 30%的資料,0 < k < 7;

對於 80%的資料,0 < k < 107;

對於 100%的資料,1 < n< 1,000,000,0 9。

【思路】

可以的得出ans=(x+m*10^k)%n=(x+m*10^k%n)%n

因此只需要解決快速算出10^k%n即可,可以採用分治演算法在o(logn)的時間內算出。

【**】

1 #include2

using

namespace

std;34

intn,m,k;

5int pow_mod(int x)

1213

intmain()

NOIP 2013 轉圈遊戲

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

NOIP 2013 轉圈遊戲

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

noip2013 轉圈遊戲 (快速冪模)

p1841轉圈遊戲 accepted 標籤 noip提高組2013 n 個小夥伴 編號從 0 到 n 1 圍坐一圈玩遊戲。按照順時針方向給 n 個位置編號,從0 到 n 1。最初,第 0 號小夥伴在第 0 號位置,第 1 號小夥伴在第 1 號位置,依此類推。遊戲規則如下 每一輪第 0 號位置上的小夥...