您的位置:首页 > 其它

UVa 133 救济金发放

2015-07-20 10:55 246 查看
典型的约瑟夫模拟。。

循环取余+标记是否出局+判断相等

代码如下:

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<iostream>

#include<algorithm>

using namespace std;

const int maxn=30;

int n,k,m,a[maxn];

int zq(int p,int d,int t){

while(t--){

do{p=(p+d+n-1)%n+1;}while(a[p]==0);

}return p;

}

int main(){

while(scanf("%d",&n)&&n){

memset(a,1,sizeof(a));

scanf("%d%d",&k,&m);

int l=n,p1=n,p2=1;

while(l){

p1=zq(p1,1,k);

p2=zq(p2,-1,m);

printf("%3d",p1);l--;

if(p2!=p1){printf("%3d",p2);l--;}

a[p1]=a[p2]=0;

if(l)printf(",");

}

printf("\n");

}return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: