C++之救济金发放问题
n(n<20)个人站成一圈,逆时针编号为1~n。有两个官员,A从1开始逆时针数,B从n开始顺时针数。在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上)。接下来被官员选中的人(1个或者2个)离开队伍。输入 n,k,m 输出每轮里被选中的人的编号
样例输入
n=10 k=4 m=3
样例输出
4 8 9 5 3 1 2 6 10 7
#include <stdio.h>
#include <stdlib.h> int main(void)
{
int n, m, k;
int i;
int stemp_m, stemp_k; // 代表军官AB所在的位置
int people_num; // 记录队伍中还有多少人未被选出
int people_state[20] = {0};
// 初始化数组所有值为0,
// 当值为1时,代表该人存在,
// 当值为0时,代表该人已被选出 printf("请输入总人数n,官员A数的k,官员B数的m:");
scanf("%d %d %d", &n, &k, &m); for(i = 1; i <= n; i++)
{
people_state[i] = 1;
} stemp_m = n + 1;
stemp_k = 0;
people_num = n;
while(people_num)
{
for(i = 0; i < k; i++) // 得出官员A所选的人的位置
{
do
{
stemp_k = (stemp_k + 1) % n;
if(stemp_k == 0)
{
stemp_k = n;
}
} while (people_state[stemp_k] == 0);
} for(i = 0; i < m; i++) // 得出官员B所选的人的位置
{
do
{
stemp_m = stemp_m - 1;
if(stemp_m == 0)
{
stemp_m = n;
}
} while (people_state[stemp_m] == 0);
} printf("%d ", stemp_k);
people_num--;
if(stemp_m != stemp_k)
{
printf("%d ", stemp_m);
people_num--;
}
people_state[stemp_m] = 0;
people_state[stemp_k] = 0;
}
printf("\n");
system("pause"); }
C++之救济金发放问题的更多相关文章
- 算法习题---4.3救济金发放(UVa133)
一:题目 (n< )个人站成一圈,逆时针编号为1~n.有两个官员,A从1开始逆时针数,B从n开始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上 ...
- uva133 救济金发放
#include<stdio.h> #define maxn 20 ], n; int go( int p,int d,int t ) {// printf("a[%d]=%d\ ...
- ACM-选人问题(救济金发放)
n(n<20)个人站成一圈,逆时针编号为1-n.有两个官员,A从1开始逆时针数,B从n开 始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个 官员停在同一个人上) ...
- 救济金发放(UVa133)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- 救济金发放(The Dole Queue, UVa 133)
n(n<20)个人站成一圈,逆时针编号为1-n.有两个官员,A从1开始逆时针数,B从n开 始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个 官员停在同一个人上) ...
- 4_3 救济金发放(UVa133)<子过程/函数设计>
为了缩短领救济品的队伍,NNGLRP决定了以下策略:每天所有来申请救济品的人会被放在一个大圆圈,面朝里面.标明一个人为编号1号,其他的就从那个人开始逆时针开始编号直到N.一个官员一开始逆时针数,数k个 ...
- UVa 133,发放救济金
沿用前一个题的思路: 用left记录剩下的点,直到全部选完. 这里我的问题是,我一直pos = (pos + f + n)%n,这里的问题是对于B点来说,开始的位置是1,就成了(1+(-1) +n) ...
- 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token
OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft.Owin.Security.OAuth应运而生(它的实现代码在Katana项目中),帮 ...
- 在WebApi中基于Owin OAuth使用授权发放Token
如何基于Microsoft.Owin.Security.OAuth,使用Client Credentials Grant授权方式给客户端发放access token? Client Credentia ...
随机推荐
- JavaScript面向对象①
什么是对象 对象是一个整体,对外提供一些操作 什么是面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节:比如jQuery 面向对象编程(OOP)的特点(自己理解的特点:把书本上多态放在类继承 ...
- js 数组 添加或删除 元素 splice 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素 filter
里面可以用 箭头函数 splice 删除 增加 数组 中元素 操作数组 filter 创建新数组 检查指定数组中符合条件的所有元素
- intellij idea 2019 右键包新建文件是没有java Class选项
今天要测试一个技术点于是新建了一个springboot工程, 在新建文件的时候发现右键后java class文件选项不见了. 以前真的没有碰到这种问题, 感觉很是意外于是百度Google后找到了解决办 ...
- css 高度随宽度比例变化
[方案一:padding实现] 原理: 一个元素的 padding,如果值是一个百分比,那这个百分比是相对于其父元素的宽度而言的,padding-bottom 也是如此. 使用 padding-bot ...
- IE、chrome驱动下载地址
http://selenium-release.storage.googleapis.com/index.html IE驱动https://sites.google.com/a/chromium.or ...
- Java XML文档
概念 XML(EXtensible Markup Language),可扩展标记语言.可扩展就是<>内的东西可以自己定义,可以随便写.标记语言就是加了<>符号的 .HTML是超 ...
- 微信H5页面分享获取JS-SDK
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 微信开发文档: 生成签名之前必须先了解一下jsapi_ti ...
- css如何让父元素下的所有子元素高度相同
小颖最近做的项目中要实现一个样式 ,小颖怕自己忘记了,写个随笔记下来 需求父元素下有多个子元素,并且子元素过多时要实现自动换行,给每个子元素都加了右边框,而每个子元素里的内容多少不一定,这就会产生右边 ...
- redis之expire命令详解
expire是设置redis过期时间的命令,需要注意的点有以下几点 expire设置过期时间的单位是秒,如设置name的过期时间为1000秒 expire name 1000 超过时间后会自动删除 ...
- 笔记&想要置顶但懒得置顶的文章目录
1.\(\text{Markdown&Latex}\)学习笔记 2.一些笔记 3.好东西 4.线段树学习笔记 5.并查集学习笔记 6.友链 7.语录