SDNU 1263.C语言程序设计教程(第三版)课后习题10.5(约瑟夫环
发布时间:2020-12-16 09:19:58 所属栏目:百科 来源:网络整理
导读:Description 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 Input 初始人数n Output 最后一人的初始编号 Sample Input 3 Sample Output 2 Source Unknown /// /// _ooOoo_ /// o8888
Description
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
Input
初始人数n
Output
最后一人的初始编号
Sample Input3 Sample Output2 Source
Unknown
/// /// _ooOoo_ /// o8888888o /// 88" . "88 /// (| -_- |) /// O = /O /// ____/`---‘____ /// .‘ | |// `. /// / ||| : |||// /// / _||||| -:- |||||- /// | | - /// | | /// | _| ‘‘---/‘‘ | | /// .-__ `-` ___/-. / /// ___`. .‘ /--.-- `. . __ /// ."" ‘< `.____<|>_/___.‘ >‘"". /// | | : `- `.;` _ /`;.`/ - ` : | | /// `-. _ __ /__ _/ .-` / / /// ======`-.____`-.________/___.-`____.-‘====== /// `=---=‘ /// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /// Buddha Bless,No Bug ! /// #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <cstdlib> #include <queue> #include <stack> #include <vector> using namespace std; #define MAXN 100010 #define ll long long int n,num = 0,sum = 0,id; bool sign[1000000+8]; int main() { num = 0,sum = 0; scanf("%d",&n); for(int i = 0; i < n; i++) sign[i] = 1; id = 0; while(sum < (n - 1)) { if(sign[id])num++; if(num == 3) { sign[id] = 0; num = 0; sum++; } id++; if(id == n)id = 0; } for(int i = id; i < n; i++) if(!sign[id]) id++; else break; printf("%dn",id + 1); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |