Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ นับเด็กที่ได้ลูกบอลหลังการทอยแต่ละครั้ง

โจทย์: เด็ก n คนยืนวงกลม หมายเลข 1 ถึง n ตามเข็มนาฬิกา เด็ก 1 ถือลูกบอล ทอยไปคนถัดไป แล้วคนที่ 2 ทอยข้าม 1 คน (ไปหา 4) คนที่ 4 ทอยข้าม 2 คน (ไปหา 7) ... หาหมายเลขเด็กที่ได้ลูกบอลหลังการทอยแต่ละครั้ง

Input: n=10 → Output: [2,4,7,1,6,2,9,7,6]

ขั้นตอนแก้

p := 1
for i := 1 to n-1:
    p := p + i
    p := p mod n
    if p == 0: 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);
}

Input

10

Output

2, 4, 7, 1, 6, 2, 9, 7, 6,