win7系统可以做网站吗,企业网站建设的误区主要有,广州市建设职业培训学校网站,在线制作图片散发光芒【题目描述】 传说约瑟夫当年活下来就是靠快速计算这个问题。n个人围成一圈#xff0c;编号依次为1,2,3…n。从第一个人开始报数#xff0c;数到m的人再出圈。以此类推#xff0c;直到所有的人都出列。请输出依次出圈人的编号。 【输入格式】 两个整数n,m#xff0c;均在[1…【题目描述】 传说约瑟夫当年活下来就是靠快速计算这个问题。n个人围成一圈编号依次为1,2,3…n。从第一个人开始报数数到m的人再出圈。以此类推直到所有的人都出列。请输出依次出圈人的编号。 【输入格式】 两个整数n,m均在[1, 100]。 【输出格式】 n个用空格分隔的整数表示出圈人的编号。 样例输入6 4 样例输出4 2 1 3 6 5 耐心一些认真一些其实并不难~ 【C语言代码实现】
# include stdio.h
int main()
{int n, m;scanf(%d%d, n, m); // 输入两个正整数int s n; // 变量s记录当前在圈内的人数int a[105] {0}; // 数组a记录这n个人是否在圈内初始值全为0表示n个人全部在圈内出圈后应修改元素为1int k 0, p 0; // 变量k记录当前报数是多少变量p记录当报到最后一个人时反过来从前面的哪个位置开始报数while (s) { // 当圈内有人时进行循环while (a[p] ! 0) { // 找到本次报数从第几个人开始报数p;}for (int i p; i n; i) { // 遍历数组aif (!a[i]) { // 如果第i1个人在圈内k; // 报数加1if (k m) { // 恰好报到mprintf(%d , i 1); // 输出第i1个人的编号a[i] 1; // 修改对应元素为1--s; // 圈内的人数要相应减1k 0; // 报数归零从0开始}}}}return 0;
}