C++程式碼:統計每次投擲後拿到球的孩子數量
假設我們有一個數字n。一些孩子站在一個圓圈上。他們的編號從1到n,按順時針順序排列,1號孩子拿著球。首先,1號孩子把球傳給下一個順時針方向的孩子,然後2號孩子把球傳給下下一個孩子(4號孩子),然後4號孩子把球傳給7號孩子,依此類推。當球被丟擲時,它可能會超過圓圈的起點。並非所有孩子在遊戲中都能拿到球。如果一個孩子沒有拿到球,我們需要找到每次投擲後拿到球的孩子們的編號。
因此,如果輸入是n = 10,則輸出將是[2, 4, 7, 1, 6, 2, 9, 7, 6]。
步驟
為了解決這個問題,我們將遵循以下步驟:
p := 1 for initialize i := 1, when i < n, update (increase i by 1), do: p := p + i p := p mod n if not p is non-zero, then: p := n print p
示例
讓我們看看下面的實現以更好地理解:
#include <bits/stdc++.h>
using namespace std;
void solve(int n){
int p = 1;
for (int i = 1; i < n; i++){
p += i;
p %= n;
if (!p)
p = n;
printf("%d, ", p);
}
}
int main(){
int n = 10;
solve(n);
}輸入
10
輸出
2, 4, 7, 1, 6, 2, 9, 7, 6,
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP