2746:约瑟夫问题poj
2746:约瑟夫问题
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
- 输入
- 每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:
0 0
- 输出
- 对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号
- 样例输入
-
6 2
12 4
8 3
0 0 - 样例输出
-
5
1
7
代码:#include<iostream>
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
using namespace std; int main()
{
int m,n;
while(true)
{
int i,j;
int count=;
cin>>m>>n;
if(m==&&n==)//m,n同时为0的时候退出
break;
char *str;
if((str=(char *)malloc((m+)*sizeof(char)))==NULL)//判断是否能够分配空间
{
printf("failed!\n");
exit();
}
memset(str,'',(m+)*sizeof(char));//分配空间,赋初值
int last=m,ptr=;//last为计数当前还有多少个没报数的猴子,ptr为移动指针,指向剩下的猴子
while(last>)
{
ptr++;
if(str[ptr]=='')//如果还没报数,则处理
{
count++;
if(count==n)//计数到了出列的数字
{
count=;//重新计数
str[ptr]='';//数组置零
last--;//猴子的数目减少
}
}
if(ptr==m)//指针移动到了最后一个猴子
{
ptr=;
}
}
for(int k=;k<=m;k++)
{
if(str[k]=='')
{
cout<<k<<endl;
break;
}
}
free(str);
str=NULL;
}
return ;
}#include<iostream>
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n)
{
if(m==&&n==)
{
break;
}
char *str;
int last,ptr,count;
if ((str=(char *) calloc (m + , sizeof(char))) == NULL) //这里判断需小心,是数组的长度
{
printf("空间分配失败!\n");
exit(-);
}
memset(str,'',(m+)*sizeof(char));
count=ptr=;
last=m;
while(last>)
{
ptr++;
if(str[ptr]=='')
{
count++; if(count==n)
{
count=;
str[ptr]='';
last--;
}
}
if(ptr==m)
{
ptr=;
}
}
for(ptr=;ptr<=m;ptr++)
{
if(str[ptr]=='')
{
cout<<ptr<<endl;
break;
}
}
free(str);
str=NULL;
}
return ;
}#include<iostream>
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n)
{
if(m==&&n==)
{
break;
}
/*
char *str;
int last,ptr,count;
if ((str=(char *) calloc (m + 1, sizeof(char))) == NULL) //这里判断需小心,是数组的长度
{
printf("空间分配失败!\n");
exit(-1);
}
memset(str,'1',(m+1)*sizeof(char));
count=ptr=0;
last=m;
while(last>1)
{
ptr++;
if(str[ptr]=='1')
{
count++; if(count==n)
{
count=0;
str[ptr]='0';
last--;
}
}
if(ptr==m)
{
ptr=0;
}
}
for(ptr=1;ptr<=m;ptr++)
{
if(str[ptr]=='1')
{
cout<<ptr<<endl;
break;
}
}
free(str);
str=NULL;*/
int s=;
for(int i=;i<=m;i++)
{ s=(s+n)%i;
}
cout<<s+<<endl;
}
return ;
}
2746:约瑟夫问题poj的更多相关文章
- POJ 2359 Questions(约瑟夫环——数学解法)
题目链接: http://poj.org/problem?id=2359 题意描述: 输入一个字符串 按照下面的规则,如果剩下的最后一个字符是'?',输出"Yes",如果剩下的最后 ...
- poj 1012 & hdu 1443 Joseph(约瑟夫环变形)
题目链接: POJ 1012: id=1012">http://poj.org/problem?id=1012 HDU 1443: pid=1443">http:// ...
- POJ 1012 Joseph 约瑟夫问题
http://poj.org/problem?id=1012 早上去图书馆复习苦逼的复习....万恶的数逻.T T我还要自我安慰的说复习完了奖励回来刷水题~ 10点多的时候外面校运会大吼撑杆跳的那个. ...
- poj 1012 Joseph (约瑟夫问题)
Joseph Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47657 Accepted: 17949 Descript ...
- Poj 3517 And Then There Was One(约瑟夫环变形)
简单说一下约瑟夫环:约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个 ...
- Joseph POJ - 1012 约瑟夫环递推
题意:约瑟夫环 初始前k个人后k个人 问m等于多少的时候 后k个先出去 题解:因为前k个位置是不动的,所以只要考虑每次递推后的位置在不在前面k个就行 有递推式 ans[i]=(ans[i-1]+m ...
- POJ 2886.Who Gets the Most Candies? -线段树(单点更新、类约瑟夫问题)
线段树可真有意思呢续集2... 区间成段的替换和增减,以及区间求和等,其中夹杂着一些神奇的操作,数据离散化,简单hash,区间异或,还需要带着脑子来写题. 有的题目对数据的操作并不是直接按照题面意思进 ...
- POJ 3517 And Then There Was One( 约瑟夫环模板 )
链接:传送门 题意:典型约瑟夫环问题 约瑟夫环模板题:n个人( 编号 1-n )在一个圆上,先去掉第m个人,然后从m+1开始报1,报到k的人退出,剩下的人继续从1开始报数,求最后剩的人编号 /**** ...
- POJ 2886 Who Gets the Most Candies?(线段树·约瑟夫环)
题意 n个人顺时针围成一圈玩约瑟夫游戏 每一个人手上有一个数val[i] 開始第k个人出队 若val[k] < 0 下一个出队的为在剩余的人中向右数 -val[k]个人 val[k ...
随机推荐
- 什么是GUID?
定义及格式 1.全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系 ...
- C 实现可变参数
C中可以借助va_list实现可变参数: va_start:使用传入的可变参数的第一个变量初始化va_list va_arg:获取当前可变参数,每次调用时会将指针向后移 va_end:结束 利用这个机 ...
- Spark SQL数据源
[TOC] 背景 Spark SQL是Spark的一个模块,用于结构化数据的处理. ++++++++++++++ +++++++++++++++++++++ | SQL | | Dataset API ...
- python参考手册一书笔记之第一篇上
在python2和python3的版本差异很大输出hello world的方法在2里支持在3里就不支持了. print 'hello world' #在2中支持 print ('hello world ...
- C11 constant expressions 常量表达式
一图流总结hhh
- DataTable数据修改,换列
增加列 DataTable table= new DataTable(); table.Columns.Add("ID", type ...
- iPhone X 适配解决方案
在head里添加<meta name='viewport' content='initial-scale=1, viewport-fit=cover'> 这将导致一个页面允分利用iPhon ...
- JS实现移动端购物车左滑删除功能
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- C语言程序内存布局
C语言程序内存布局 如有转载,请注明出处:http://blog.csdn.net/embedded_sky/article/details/44457453 作者:super_bert@csdn 一 ...
- Tinyhttpd阅读笔记
1.简介 tinyhttpd是一个开源的超轻量型Http Server,阅读其源码,可以对http协议,微型服务器有进一步的了解. 源码链接: 参考博客:tinyhttpd源码分析 2.笔记 ---- ...