2646 - 拉手游戏
N个小朋友手拉手站成一个圆圈,从第一个小朋友开始循环报数,报到M的那个小朋友退到圈外,然后他的下一位重新报"1"。这样继续下去,直到最后只剩下一个小朋友,他原来站在什么位置上呢?
Input
仅一行,有两个数N和M,其中N表示小朋友的人数,M表示报到数。1<N<1000,M<=N
Output
仅一个数,留下的小朋友的编号。
Examples
Input
8 3
Output
7
Solution C++
#include<bits/stdc++.h> using namespace std; int main() { int n,m,a[1005]; cin>>n>>m; int ans=0,sum=0; for(int i=1;i<=n;i++) a[i]=i; for(int i=1; ;i++) { for(int j=1;j<=n;j++) { if(a[j]!=0) { ans++; if(ans==m) { a[j]=0;sum++; ans=0; } } if(sum==(n-1)) { for(int k=1;k<=n;k++) { if(a[k]!=0) {cout<<k; return 0;} } } } } return 0; }