站外题求助(悬赏一关)
查看原帖
站外题求助(悬赏一关)
746229
Joker_lazydoghead楼主2023/1/10 18:06

有 n 个人排成一圈,从 1 到 n 编号。从第一个人开始依次报数(第一个人报的数是 1,下一个人报的数是 2,...,当前这个人报的数字等于前面那个人报的数字加一),报数一共进行 n 轮,对于第 i (1≤i≤n) 轮,数到 i2 的人出列,下一个人继续从 1 开始报数。结束的时候所有人都会出列。

请依次输出每一轮出列的人的编号。

我的代码(0):

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long Barbatoss;
typedef long long Wendy;
typedef long ShaTang;
typedef int LeiZe;
Barbatoss n,i,b,t,a[1000001];
main(){
	scanf("%llu",&n);
	i=1;
	while(i<=n){
		b=((i*i)%n+t)%n;
		if(b==0)b+=n;
		while(a[b]){
			b++;
			b%=n;
			if(b==0)b+=n;
		}
		a[b]=b;
		printf("%llu ",b);
		t=b;
		i++;
	}
}
/*
10

1 5 6 8 9 10 2 3 4 7
*/

求调!!!!!!

2023/1/10 18:06
加载中...