测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40817. 约瑟夫环

填空题 困难

题目描述

约瑟夫环

题目描述

n 个人的编号是 1 ~ n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。

(报数是从 1 报起)当报到 k 的时候,这个人就退出游戏圈,下一个人重新从 1 开始报数。

求最后剩下的人的编号。这就是著名的约瑟夫环问题。

本题目就是已知 n,k 的情况下,求最后剩下的人的编号。

输入格式

题目的输入是一行,2 个空格分开的整数 n, k

输出格式

要求输出一个整数,表示最后剩下的人的编号。

样例输入

10 3

样例输出

4

参考答案

#include <iostream> using namespace std; int f[1000010]; int main() { int n, k; cin >> n >> k; for (int i = 1; i <= n; i ++) f[i] = (f[i - 1] + k) % i; cout << f[n] + 1 << endl; return 0; }
上一题 下一题