洛谷P1145 约瑟夫
题目描述
n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人。现在有一圈人,k个好人站在一起,k个坏人站在一起。从第一个好人开始数数。你要确定一个最小的m,使得在第一个好人被杀死前,k个坏人先被杀死。
感谢yh大神指出样例数据的错误。
输入输出格式
输入格式:
一个k,0<k<14
输出格式:
一个m
输入输出样例
3
5
4
30
说明
0<k<14
分析:正解就是暴力.只要稍微优美那么一点点就能过了,最最最朴素的暴力就是枚举m,然后一位一位地挪,非常慢,正确的方法是直接取模,判断是不是坏人,每一个m最多走k次就会结束游戏,每次删除一个人后把起点变一下,模数变一下就好了.需要注意的一点是每个人的下标要从0开始,不然取模的时候可能会得到0,然后就炸了.
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm>using namespace std;int k,m = 1,beginn = 1; bool flag = false,flag2 = false;bool check(int mod) {int t = (beginn + m - 1) % mod;if (t >= k){beginn = t;return true;} return false; }int main() {scanf("%d",&k);m = k;while (1){beginn = 0;flag2 = 0;for (int i = 0; i < k; i++){if (!check(2 * k - i)){flag2 = 1;break;}}if (!flag2)break;m++;}printf("%d\n",m);return 0; }
转载于:https://www.cnblogs.com/zbtrs/p/7465075.html
洛谷P1145 约瑟夫相关推荐
- (枚举)[洛谷P1145约瑟夫]题解|CSDN创作打卡
题意很简单,我们想到用枚举的方法来做,枚举m.由于好人有k个,所以至少从m=k+1开始枚举. 带着这个思路,我们开始写代码.这是我的第一个版本代码 #include <bits/stdc ...
- 洛谷 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 ...
最新文章
- 【剑指offer】用两个栈实现一个队列
- 庆祝开博第一天!呵呵!
- C. Present(二分 + 扫描线)
- oracle 匿名段,这段匿名块看着没什么问题啊
- Python数据结构与算法(三)--数据结构的概念
- require()与 require_once()、 include与include_once()
- java beanshell_Java脚本-BeanShell
- 我的生信自学心得分享
- Java使用PDFBox API实现对PDF文档进行关键字检索
- almon多项式_计量经济学 总结.docx
- 重新学javaweb---cookiesession
- mysql操作语句类型DQL\DML\DDL\DCL
- 51单片机使用PWM调速
- 西南大学网络与继续教育学院课程考试试题卷
- SEO 搜索引擎优化 详解
- 网络:tcp长连接与短连接
- 浙江大学 工程伦理 第四章单元测试答案
- IT中小企业的股权激励方案设计
- QQ消息群发器实现原理及核心代码
- Libra: 一种新型金融基础设施尝试