# LeetCode 1894. Find the Student that Will Replace the Chalk https://leetcode.com/problems/find-the-student-that-will-replace-the-chalk/description/ ## 題目大意 有一個長度為 `n` 的整數陣列 `chalk` 以及 整數 `k` 現在總共有 `k` 支粉筆 學生共 `n` 人編號 `0`, `1`, ..., `n-1` ,老師會從 `0` 開始依序且循環地分派問題,對於編號 `i` 的同學,他每次解決問題需要消耗 `chalk[i]` 支粉筆 如果當前剩餘的粉筆數量嚴格小於 `chalk[i]` 則編號 `i` 的同學會被要求補充粉筆 請回傳編號幾號的同學會需要補充粉筆 ## 思考 假設從 `0` 號同學到 `n-1` 號同學皆解決問題為一輪, `k` 支粉筆總共可以讓學生們用 `m` 輪 則我們只需要討論 `m` 輪過後剩餘的 `r` 支粉筆在輪到誰時不夠用了即可 問題顯然不難, $r\equiv k\mod{(\sum\limits_{i=0}^{n-1}chalk[i])}$ ```cpp! class Solution { public: int chalkReplacer(vector<int> &chalk, int k) { k %= accumulate(chalk.begin(), chalk.end(), 0L); if (k == 0) return 0; const int n = chalk.size(); for (int i = 0; i < n; ++i) { k -= chalk[i]; if (k < 0) return i; } throw; } }; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up