UVA 3882【dp】【简单数学】
2015-10-20 18:56
225 查看
题意:
给定三个数分别是:
人数 间隔 起点
题目中人的编号从1开始。在进行约瑟夫环的判定之后,求解最后能够活下来的人。
思路:
约瑟夫环的递推公式是
f
=(f[n-1]+jiangeshu)%zongrenshu.
f[1]=0.
注意公式中的人是从0开始编号的。
由于给定了起点所以需要修正偏移。这里我的理解是把最后一次的间隔人数看作是起点而不是给定的间隔人数,因为通过递推公式得到的是从第0个开始算起的,那么最后修改了间隔人数正好保证第一个出来的人是第起点个。而以后出来的人按照间隔人数出列。
给定三个数分别是:
人数 间隔 起点
题目中人的编号从1开始。在进行约瑟夫环的判定之后,求解最后能够活下来的人。
思路:
约瑟夫环的递推公式是
f
=(f[n-1]+jiangeshu)%zongrenshu.
f[1]=0.
注意公式中的人是从0开始编号的。
由于给定了起点所以需要修正偏移。这里我的理解是把最后一次的间隔人数看作是起点而不是给定的间隔人数,因为通过递推公式得到的是从第0个开始算起的,那么最后修改了间隔人数正好保证第一个出来的人是第起点个。而以后出来的人按照间隔人数出列。
#include<stdio.h> int a,b,c; int tmp[10005]; int main() { scanf("%d%d%d",&a,&b,&c); while(a||b||c) { tmp[1]=0; for(int i=2;i<a;i++) tmp[i]=(tmp[i-1]+b)%i; printf("%d\n",(tmp[a-1]+c)%a+1); scanf("%d%d%d",&a,&b,&c); } }
相关文章推荐
- express
- java编程思想-多态
- QFIL
- 愿望思维
- JAVA设计模式(11) —<结构型>组合模式(Composite)
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
- 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题
- 学习笔记03-java常用类
- uboot移植与OS移植
- iOS -实现UIView圆角显示的方法
- Android文字局部变色 TextView文字部分变色代码
- Zookeeper学习7_Zookeeper节点的增加及故障演练
- Mysql只同步某些表
- spark primer 计算单源最短路径
- BIOS+MBR+chameleon 黑苹果安装教程 10.10.5 Yosemite
- 我的知识树
- Docker学习笔记 — Coreos/Flannel
- AndroidStudio 怎样导入jar包
- 基于PHPnow搭建Eclipse开发环境
- POJ 3087 Shuffle'm Up