百练2746:约瑟夫问题
来源:互联网 发布:java重写tostring方法 编辑:程序博客网 时间:2024/06/05 22:37
2746:约瑟夫问题
- 查看
- 提交
- 统计
- 提示
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
- 输入
- 每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:
0 0 - 输出
- 对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号
- 样例输入
6 212 48 30 0
- 样例输出
51
7
虽然一边AC,但本地调了好一段时间。在这里说一下,供初学者警醒。
首先,由于我令n不断递减,到1时终止循环,因此无论是选猴王的过程中(循环中),还是之后迎接猴王时(for遍历看剩的是谁),作为指针的p,都不能再与n比较了,因为他变了,而应与其副本ncpy比较。
其次,只注意变量清零而没有对monkey数组清零,导致第二次测试就输不出来了,所以,,一定要注意操作过的东西,看看本次测试之后是否需要清零。。忘记清零的现象,要不没有输出了,要么输出奇怪,崩溃也是有可能的....
再有就是一些小错误了,基本都是变量混淆,一debug就能发现。告诫大家喝完酒后不要写代码,效率有点低啊~
上网找了此题的高效解决办法,不得不说,这代码我服:
#include <stdio.h>int main(){ int n, m, i, s=0; while(scanf("%d%d", &n, &m)!=EOF,n&&m) { s=0; for (i=2; i<=n; i++){ s=(s+m)%i; } printf ("%d\n", s+1); } return 0;}
*******************************************
坚持,而不是打鸡血~
阅读全文
0 0
- 百练-2746-约瑟夫问题
- 百练--2746 -- 约瑟夫问题
- 百练--2746--约瑟夫问题
- 百练 2746:约瑟夫问题
- 百练2746:约瑟夫问题
- 百练-约瑟夫问题
- POJ 百练 2746: 约瑟夫问题
- 百练OJ 2746 约瑟夫问题
- 百练OJ:2746:约瑟夫问题
- 百练OJ2746: 约瑟夫问题
- 百练_2746约瑟夫问题
- 链表——约瑟夫问题 百练2746
- 百练-2746-OnlineJudge-约瑟夫问题.一(栈,数组模拟)
- 百练-2746-OpenJudge(约瑟夫问题分析二,数学方法)
- 2746:约瑟夫问题 百炼(非链表)
- oj 2746 约瑟夫问题
- poj 2746:约瑟夫问题
- POJ 2746:约瑟夫问题
- 学习搭建springboot框架
- [猜结论][乱搞][博弈]Codechef . Palindromic Game
- angularJs 一些API
- 学生信息管理系统—课程设置窗体中怎么一次性添加或删除课程
- PHP经验总结
- 百练2746:约瑟夫问题
- Canvas---放大和缩小圆环插件
- 2017.08.18【NOIP2017提高组A组】模拟赛
- C语言中对数据类型的理解
- 2017.8.18总结3-沙耶的玩偶
- 移植linux x86 C库 到android arm平台【交叉编译实现应用增量更新】
- Ubuntu——将应用固定在docky
- 图的深度遍历
- 第8章 Resources -- Spring4.3.8参考文档中文版