test 7 Problem A: [noip2016十连测第七场]约瑟夫游戏 (找规律+数论)
来源:互联网 发布:2017知乎推荐书单 编辑:程序博客网 时间:2024/06/05 00:09
Problem A: [noip2016十连测第七场]约瑟夫游戏
Time Limit: 20 Sec Memory Limit: 233 MBSubmit: 20 Solved: 9
[Submit][Status][Web Board]
Description
YJC很喜欢玩游戏,今天他决定和朋友们玩约瑟夫游戏。约瑟夫游戏的规则是这样的:n个人围成一圈,从1号开始
依次报数,当报到m时,报1、2、...、m-1的人出局,下一个人接着从1开始报,保证(n-1)是(m-1)的倍数。最后剩
的一个人获胜。YJC很想赢得游戏,但他太笨了,他想让你帮他算出自己应该站在哪个位置上。
http://www.lydsy.com/JudgeOnline/upload/201610/test7.rar
Input
第一行包含两个整数n和m,表示人数与数出的人数。
2≤m≤n<2^63-1 且(n-1)是(m-1)的倍数。
2≤m≤n<2^63-1 且(n-1)是(m-1)的倍数。
Output
输出一行,包含一个整数,表示站在几号位置上能获得胜利。
Sample Input
10 10
Sample Output
10
HINT
题解:这应该也算是约瑟夫问题的变形吧。。。
刚开始的时候只想到了模拟递推。
就是f[n]表示n个人的时候最后剩下人的编号。那么显然f[1]=1。我们是在减去(m-1)个人的情况下得到的f[n-m+1]那么如果要推算f[n],首先在转换的时候编号都减少了m,再者如果人数过少那么肯定会出现循环,比如1,2,3,4,5,如果从3开始数,m=5的话,一次报号的人是3,4,5,1,2,这样最终剩下的是2。所以在累加m的过程中,一定会出现计算到的数超出当前总人数的情况,所以f[n]=f[n-m+1]%(n-m+1)+m。
但是这样只能过50分。然后就有一个打标发现的规律。
f[m^a+m-1]=m,其他的f[n]=f[n-m+1]+m,那么我们令n=m^a+(m-1)*k 其中(m^a<n<=m^a+1)保证k的系数不能为0。
f[n]=k*m=f[m^a+m-1]+(k-1)*m=k*m.
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#define LL long long using namespace std;LL n,m;int main(){scanf("%I64d%I64d",&n,&m); LL x=1; for (int i=1;x<n/m;i++) x*=m; printf("%I64d\n",(n-x)/(m-1)*m);}
0 0
- test 7 Problem A: [noip2016十连测第七场]约瑟夫游戏 (找规律+数论)
- 【bzoj 十连测】[noip2016十连测第七场]Problem A: 约瑟夫游戏(递推+打表)
- test 8 Problem A: [noip2016十连测第八场]神炎皇 (数论+gcd两个性质的证明)
- test 3 Problem A: [noip2016十连测第三场]平均数 (实数二分+排序+树状数组)
- Problem A: [noip2016十连测第五场]simple(模拟)
- 【bzoj 十连测】[noip2016第二场]Problem A. Divisors(暴力)
- 找规律(约瑟夫的数论问题,uva 1363)
- test 8 Problem B: [noip2016十连测第八场]降雷皇 (dp+线段树)
- test 8 Problem C: [noip2016十连测第八场]幻魔皇 (递推+乱搞)
- Joseph's Problem 数论 找规律
- 【bzoj 十连测】[noip2016十连测第八场]Problem A: 神炎皇(数学相关:线性筛)
- HDU 4972 A simple dynamic programming problem(找规律)
- Problem B: [noip2016十连测第五场]walk (树形dp)
- Problem C: [noip2016十连测第五场]travel (贪心)
- POJ 2800 Joseph’s Problem 数论找规律
- 【数论 && 找规律】LightOJ
- Problem A. Number Theory Problem(2016China-Final)【找规律】
- Codeforces 584 A. Olesya and Rodion 数论+找规律(构造)
- 用soapUI做接口级别的功能和性能测试
- 类的内存分布
- 如何避免Zigbee与Wifi的信道重叠
- LinkedHashMap
- java累加和校验实现方式16进制
- test 7 Problem A: [noip2016十连测第七场]约瑟夫游戏 (找规律+数论)
- org.hibernate.exception.JDBCConnectionException: could not execute query
- IPD管理体系中的产品和技术研发执行团队
- Redis实现多人多聊天室
- ListBox选中项取消不了,BCG里的黑科技
- 解决iOS开发 百度地图点击协议方法不走的问题
- MySQL 5.7版本的安装使用详细教程+更改数据库data的存储路径
- Android 6.0 权限申请
- Weka使用