呜呜呜(速来)
  • 板块灌水区
  • 楼主Tzh2012
  • 当前回复12
  • 已保存回复12
  • 发布时间2024/8/22 20:03
  • 上次更新2024/8/22 22:03:51
查看原帖
呜呜呜(速来)
1331199
Tzh2012楼主2024/8/22 20:03

呜呜呜,这次绝对没有无意义内容了!!! 问问题(不会的,象征性点赞+关注+私信)

解答出来的奖励: 1 2

题目

1299 - [ 2020年绍兴市第十八届少儿信息学竞赛复赛 ] - 卫星star 小B是一个卫星通讯达人,她建立了一套环球卫星通讯系统。此系统由n颗通讯卫星组成,编号为1到n,呈环状。为了保证信息通信的安全,在信息传递时将一条信息分割到各个卫星中传递。按以下规则接收信号:先接收第1号卫星上的信号,再间隔1颗卫星接收信号,这时恰好是第2号卫星上的信号;接下来间隔2颗卫星,接收到是第3号卫星上的信号。依此类推,每次间隔的卫星数量为上一次接收到的卫星编号。一颗卫星只接收一次信号,接收过的卫星不再接收第二次信号,即此卫星不计算在间隔的卫星数量中。按此规则,正好可以接收到所有n颗卫星的信号,并组成最终信息。 例如,有5颗卫星时,假设5颗卫星的环状编排顺序为:1 3 2 5 4,4号卫星的下一颗卫星是1号卫星。按上述规则接收信号的过程为: ①先接收1号卫星上的信号; ②接着间隔1颗,轮到2号卫星; ③接着间隔开颗2颗(卫星5和卫星4),由于是环状,又从1号开始数,由于1号已经接收过信号了,不计算在内,所以轮到3号卫星; ④接着间隔3颗(卫星5、卫星4、卫星5),轮到4号卫星; ⑤接着间隔4颗(卫星5、卫星5、卫星5、卫星5),轮5号卫星。 由上述步骤可知,接收到的卫星信号顺序为1 2 3 4 5。 输入卫星的数量n,帮小B设计卫星的编排顺序,使得可以按照卫星编号1到n的顺序接收信号。

输入 一个整数n,表示卫星的数量。

输出 卫星的排布顺序

样例 输入复制 5 输出复制 1 3 2 5 4 提示 【数据范围】 50%的数据,1≤n≤1000 100%的数据,1≤n≤10000

来源 2020年第十八届绍兴市少儿信息学竞赛复赛试题

时间限制 1 秒 内存限制 128 MB

我的垃圾代码:

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+5;
int a[N],b[N];
int main(){
	int n,t=1;
	scanf("%d",&n);
	a[1]=1;
	b[1]=1;
	for(int i=1;i<n;i++){
		int f=0;
		while(f<=i){
			t++;
			if(t>n){
				t=1;
			}
			if(b[t]==0){
				f++;
			}
		}
		a[t]=i+1;
		b[t]=1;
	}
	for(int i=1;i<=n;i++){
		printf("%d ",a[i]);
	}
	return 0;
}
2024/8/22 20:03
加载中...