哪位大佬看一下是哪方面的问题
  • 板块题目总版
  • 楼主HarryDing
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/11 17:31
  • 上次更新2025/1/11 21:16:39
查看原帖
哪位大佬看一下是哪方面的问题
1386236
HarryDing楼主2025/1/11 17:31

T419234 军团
复制题目内容如下:

军团

题目描述

蹦哒啦共和国准备从国家精锐战士中选出n名战士组成若干个军团,每个战士都有自己的编号并且互不相同。为了方便分配阵营指挥官将战士的编号取模k余数相同的放入同一军团。

余数为0的放入0号军团,依次类推余数为k-1的放入k-1号军团。

为了应对接下来的战斗蹦哒啦共和国的总司令需要每个军团中战士的编号。请你利用蹦哒啦共和国的计算机编程并按照0号军团至k-1号军团的顺序按从小到大的顺序输出每个军团战士的编号,若该军团人数为0则不输出。

输入格式

第一行输入两个正整数n和k,代表n个战士和取模的数k。1<=n<=1061<=k<=1091<=n<=10^6,1<=k<=10^9

第二行输入n个正整数,第i个数为ai代表战士的编号。1<=ai<=10181<=ai<=10^{18}

输出格式

输出若干行,每行第一个数代表该军团人数 m,然后从小到大输出 m 个正整数代表该军团战士编号。

样例 #1

样例输入 #1

10 5
12 2 38 17 7 5 64 10 13  94

样例输出 #1

2 5 10
4 2 7 12 17
2 13 38
2 64 94

提示

0号军团2人编号为5 10

1号军团0人

2号军团4人编号为4 2 7 12 17

3号军团2人编号为13 38

4号军团2人编号为64 94

不废话,上代码:

#include<bits/stdc++.h>
using namespace std;
map<int,vector<int>> mp;
map<int,vector<int>>::iterator it;
int main()
{
	int n,k,t,v;
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		cin>>t;
		v=t%k;
		mp[v].push_back(t);
	}
	for(it=mp.begin();it!=mp.end();it++)
	{
		if(it->second.empty())
			continue;
		printf("%d ",it->second.size());
		for(auto i:it->second)
		{
			printf("%d ",it->second[i]);
		}
		printf("\n");
	}
	return 0;
}

输入内容:

10 5 
12 2 38 17 7 5 64 10 13 94

输出内容:

2 1635017028 -870835984 
4 0 17 1952531568 268462141 
2 -870837200 0 
2 0 -8708420032
2025/1/11 17:31
加载中...