九度oj 1188
2015-08-25 15:40
211 查看
题目描述:
N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。
请按退出顺序输出每个退出人的原序号。
输入:
包括一个整数N(1<=N<=3000)及一个整数p。
输出:
测试数据可能有多组,对于每一组数据,
按退出顺序输出每个退出人的原序号。
样例输入:
样例输出:
来源:
2003-2005年华中科技大学计算机研究生机试真题
N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。
请按退出顺序输出每个退出人的原序号。
输入:
包括一个整数N(1<=N<=3000)及一个整数p。
输出:
测试数据可能有多组,对于每一组数据,
按退出顺序输出每个退出人的原序号。
样例输入:
7 3
样例输出:
3 6 2 7 5 1 4
来源:
2003-2005年华中科技大学计算机研究生机试真题
#include<iostream> #include<stdlib.h> using namespace std; typedef struct node { int data; node* next; }n; int main() { // freopen("c:\\11.txt","r",stdin); int n,i,q; while(cin>>n) { cin>>q; node* head=(node*)malloc(sizeof(node)); head->data=1; node* p=head; for(i=2;i<=n;++i) { node* tmp=(node*)malloc(sizeof(node)); tmp->data=i; p->next=tmp; p=tmp; } p->next=head; p=head; int j=1; int flag=1; while(n) { if(p->data!=0) { if(j==q) { if(flag) { cout<<p->data; flag=0; } else cout<<" "<<p->data; j=0; n--; p->data=0; } j++; p=p->next; } else p=p->next; } cout<<endl; } return 0; }
相关文章推荐
- iOS URL缩短
- HDU - 1272 小希的迷宫(简单并查集)
- Facebook产品设计总监!设计APP时的14个必考题
- 访问pci设备中寄存器的一些方法
- DNA序列(uva-1368)
- 要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。
- (转)ArcGIS Server10.1地图服务属性概述
- jacaScript数组
- sql存储过程详解
- NSNumberFormatter 数字格式化输出
- 调用Config.ini类
- 404 Not Found 由来
- Java-数组
- Implicit super constructor BaseService() is undefined. Must explicitly invoke another constructor
- 计算机网络组网与配置技术—— 读书笔记3、传输介质和组网连接方法
- windows内核编程基础篇之字符串的处理
- MFC程序的启动过程与相关函数执行顺序
- JavaScript面向对象编程学习笔记
- Sizeof与Strlen的区别与联系
- 堆区和栈区的区别