- 9
- 0
- 约 94页
- 2017-05-07 发布于四川
- 举报
数论中的程序设计–New
输入与输出样例 输入样例: 10 8 10 2 输出样例: 1 5 分析 方法一:模拟法 实际模拟数小孩出列的过程。用一个数组表示小孩围成圈。对每个小孩赋以一个序号值作为小孩的标志。 采用 “加1求模”,当数到数组尾的时候,下一个数组下标值可以算得为0,从而回到数组首以继续整个过程。 设:Max=10000;小孩最大个数 num为小孩个数,a[Max]; 小孩数组 每次数m个小孩,便让该小孩离开;下标加1求模,使下标到达尾部后能返回到数组头。 参考代码一:见下页 #includeiosteam using namespace std; int main(){ const int Max=10000; int num,m, a[Max]; while(cinnumm){ for(int i=0;inum;i++) a[i]=i+1; //小孩编号 int k=1; //标识处理第k个小孩的离开 int i=-1; //初值 while(1){//圈中数m个小孩 for(int j=0;jm;){ i=(i+1)%num; if(a[i]!=0) j++; } if(k==num) break; //该小孩是最后一个吗? //是,则为胜
原创力文档

文档评论(0)