|
|
|
|
讨论 Discussion |
|
| |
G |
方法1:
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("p1052.in","r",stdin);
freopen("p1052.out","w",stdout);
int a[100]={0};
int i=0,j=0,s=0,k=0,m,n;
cin>>m>>n;
for(i=1;i<=m;i++)a[i]=1;
for(i=1;i<=m-1;i++) {
do{
j++;
if (j==m+1) j=1;
s=s+a[j];
}while(s!=n);
a[j]=0;
s=0;
}
for(i=1;i<=m;i++)
if (a[i]==1 )cout<<i;
fclose(stdin);
fclose(stdout);
}
方法2:
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("p1052.in","r",stdin);
freopen("p1052.out","w",stdout);
int n,m,i,j,k=0,x=0,y=-1,t;
cin>>n>>m;
vector <int > a(n); //定义a动态向量 有n个元素
for(i=0;i<=n-1;i++){ //猴子编号分别输入各个元素
a[i]=i+1;
}
while(k<n){
while(x<m){
x++;
y++;
if(y==a.size())y=0; //超过猴子一圈总数 ,说明重新来到第0个猴子
}
t=y;
k++;
if(k==n) cout<<a[y] ; //第y个出列。
a.erase(a.begin()+y); //删除a[y]变量
y=t-1;
if(y<0)y=a.size()-1;
x=0;
}
}
( ) |
|
|
|
|
|
|
|
|
|
Flag |
|
题号 |
P1052 |
|
其它 |
通过 |
143人 |
提交 |
564次 |
通过率 |
25% |
难度 |
0 |
|
|
|
|
|
|