专栏文章

题解:P14171 【MX-X23-T1】丢手绢

P14171题解参与者 5已保存评论 4

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
4 条
当前快照
1 份
快照标识符
@minogsh6
此快照首次捕获于
2025/12/02 05:45
3 个月前
此快照最后确认于
2025/12/02 05:45
3 个月前
查看原文

题意:

nn 个小朋友玩丢手绢的游戏,顺序输出被放手绢最多的小朋友的编号。

思路:

比较简单的一道模拟题,我们依照题意模拟,用一个 cntcnt 数组记录每个人被丢手绢的次数,最后扫一遍即可。

代码:

CPP
#include<bits/stdc++.h>
using namespace std;
int cnt[100005];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int x;
		cin>>x;
		if(x==0)
			cnt[i]++;
		else if(x>0)
		{
			int y=(i+x)%n;
			if(y==0)//注意这里如果是第n个人,会被模成0,要特判
				y=n;
			cnt[y]++;
		}
		else
		{
			x%=n;
			int y=i+x;
			if(y<1)
				y+=n;//这部分同上
			cnt[y]++;
		}
	}
	int maxn=0;
	for(int i=1;i<=n;i++)
		maxn=max(maxn,cnt[i]);//找最大值
	for(int i=1;i<=n;i++)
		if(cnt[i]==maxn)
			cout<<i<<" ";//相同就输出
	return 0;
}

评论

4 条评论,欢迎与作者交流。

正在加载评论...