【洛谷】P1145-约瑟夫
【洛谷】P1145-约瑟夫
题目链接
P1145 约瑟夫-洛谷
解析
与最经典的约瑟夫问题略有不同,这题要求刚好使队伍后一半人全部出列。
注:队伍序号从0开始!
这里我采用的是求出出队的人在当前队伍中序号的方法
做法为用号数m对当前总人数sum取模再减一,获得本次报数起点需要向右移动的距离(dis,当距离为-1时向左移动)
dis = m%sum - 1;
上次出列序号out+需要移动的距离dis,对sum取模,可以获得下次出列的序号,只要保证该序号大于等于k即是坏人出列
out = (out + dis + sum) % sum;
//括号内再加一个sum是为了对移动距离为-1时取模
当sum削减到k时说明坏人已全部出列。
代码
#include<iostream>
using namespace std;
int k, m;
int main()
{int ans = 0;cin >> k;for (m = k + 1;ans == 0;m++){int out = 0, sum = 2 * k, dis;while (sum > k){dis = m % sum - 1;out = (out + dis + sum) % sum;if (out >= k && out < 2 * k)sum--;elsebreak;if (sum == k)ans = m;}}cout << ans;return 0;
}
优化
m可以不用逐级递增,而是使m满足
(2n-1)k<m<=2nk,k=1,2,3…
以省去必定不满足条件的m。
【洛谷】P1145-约瑟夫相关推荐
- (枚举)[洛谷P1145约瑟夫]题解|CSDN创作打卡
题意很简单,我们想到用枚举的方法来做,枚举m.由于好人有k个,所以至少从m=k+1开始枚举. 带着这个思路,我们开始写代码.这是我的第一个版本代码 #include <bits/stdc ...
- 洛谷 P1145 约瑟夫
约瑟夫 n 个人站成一圈,从某个人开始数数,每次数到 m 的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人.现在有一圈人,k 个好人站在一起,k 个坏人站在一起.从第一个好人开始数数.你要确 ...
- 洛谷P1145 约瑟夫
题目描述 n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人.现在有一圈人,k个好人站在一起,k个坏人站在一起.从第一个好人开始数数.你要确定一个最小 ...
- 信息学奥赛一本通 2037:【例5.4】约瑟夫问题 | 1334:【例2-3】围圈报数 | 洛谷 P1996 约瑟夫问题
[题目链接] ybt 2037:[例5.4]约瑟夫问题 ybt 1334:[例2-3]围圈报数 洛谷 P1996 约瑟夫问题 [题目考点] 1. 循环遍历数组 假设数组下标为1~n,循环控制变量i从1 ...
- 【每日一题】洛谷--P1996 约瑟夫问题 java题解
文章目录 题目链接 题解 题目链接 洛谷–P1996约瑟夫问题 题解 约瑟夫问题细品一下,就是一个链表成环,根据规则要求逐渐remove的一个思路.代码详解如下: package com.compan ...
- 杀人游戏约瑟夫环(洛谷P1145题题解,Java语言描述)
题目要求 题目链接P1145 约瑟夫环问题了解一下 约瑟夫环问题其实在数据结构里与单循环链表关系密切,但是这里模拟就完事~~ 我写过的约瑟夫环问题 AC代码(Java语言描述) import java ...
- 洛谷 1145约瑟夫
打表: #include<iostream>//头文件 using namespace std;//命名空间 int num[14]={0,2,7,5,30,169,441,1872,76 ...
- C语言(C++)——洛古P1145 约瑟夫
n 个人站成一圈,从某个人开始数数,每次数到 m 的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人.现在有一圈人,k 个好人站在一起,k 个坏人站在一起.从第一个好人开始数数.你要确定一个最小 ...
- 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)
题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...
- 洛谷题库答案(持续更新)
p1000 超级玛丽游戏 洛谷 p1000 超级玛丽游戏_cyyyyds857的博客-CSDN博客 p1001 A+B problem A+B problem_cyyyyds857的博客-CSDN ...
最新文章
- 清华贵系的期末大作业:奋战三周,造台计算机!
- linux c icmp协议 判断主机存活
- 2021-05-20 Matlab实现傅里叶变换
- 剑指offer面试题15:链表中倒数第K个节点
- opencv计算机视觉学习笔记七
- 升级鸿蒙系统照片,华为鸿蒙系统照片出炉,神似EMUI,海内外花粉沸腾了
- mac idea在mybatis xml文件里引入全限定类名报红解决
- tomcat(19)Manager应用程序的servlet类
- mysql备份还原(视图、存储过程)
- python-main
- windows版本的redis
- 计算机应用0006作业2,〔计算机应用基本0006〕14秋在线作业2.doc
- 思科 GNS3 配置 链路捆绑
- 嵌入式系统设计师考试完美笔记
- python的十句名言_洗脑最厉害的10句名言名句
- 金融计算器,python实现
- 关于航空障碍灯的介绍
- Excel库存表通过吉度PDA盘点机形成盘点差异表
- eclipse快捷键以及使用技巧大全
- SRS(简单实时视频服务) 笔记(5)- 视频录制