CF1482D.Playlist

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Arkady 有一个播放列表,最初包含 nn 首歌曲,按它们在列表中出现的顺序从 11 到 nn 编号。Arkady 从第 11 首歌开始,依次听播放列表中的歌曲。该播放列表是循环的,即听完最后一首歌后,Arkady 会从头开始继续听。

每首歌有一个类型 aia_i,是一个正整数。假设 Arkady 听完一首类型为 yy 的歌,上一首听的是类型为 xx 的歌。如果 gcd⁡(x,y)=1\operatorname{gcd}(x, y) = 1,他会将刚听完的这首类型为 yy 的歌从播放列表中删除。之后他会正常继续听歌,跳过已删除的歌曲,并且忘记之前听过的所有歌曲。换句话说,删除一首歌后,他不能立即删除下一首歌。

这里 gcd⁡(x,y)\operatorname{gcd}(x, y) 表示整数 xx 和 yy 的最大公约数。

例如,如果初始歌曲类型为 [5,9,2,10,15][5, 9, 2, 10, 15],则播放列表的变化如下:
[
5, 9, 2, 10, 15
\to
5, 9, 2, 10, 15
\to
5, 2, 10, 15
]
(因为 gcd⁡(5,9)=1\operatorname{gcd}(5, 9) = 1)
[
\to
5, 2, 10, 15
\to
5, 2, 10, 15
\to
5, 2, 10, 15
\to
5, 2, 10, 15
\to
5, 2, 10, 15
\to
5, 10, 15
]
(因为 gcd⁡(5,2)=1\operatorname{gcd}(5, 2) = 1)
[
\to
5, 10, 15
\to
5, 10, 15
\to
\ldots
]
加粗的数字表示最近播放的两首歌。注意,每当删除一首歌后,Arkady 会忘记之前听过的所有歌曲。

给定初始播放列表,请你确定最终被删除的歌曲编号及其删除顺序。

输入格式

每个测试用例包含多组数据。第一行包含一个整数 tt(1≤t≤10 0001 \le t \le 10\,000),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5),表示歌曲数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \le a_i \le 10^9),表示每首歌的类型。

保证所有测试用例中 nn 的总和不超过 10510^5。

输出格式

对于每个测试用例,输出一行。首先输出一个整数 kk,表示被删除的歌曲数量。接着输出 kk 个不同的整数,按删除顺序输出被删除的歌曲编号。

输入输出样例

  • 输入#1

    5
    5
    5 9 2 10 15
    6
    1 2 4 2 4 2
    2
    1 2
    1
    1
    1
    2

    输出#1

    2 2 3 
    2 2 1 
    2 2 1 
    1 1 
    0

说明/提示

第一组测试数据的解释见题面。

第二组测试数据,播放列表变化如下:
[
1, 2, 4, 2, 4, 2
\to
1, 2, 4, 2, 4, 2
\to
1, 4, 2, 4, 2
]
(因为 gcd⁡(1,2)=1\operatorname{gcd}(1, 2) = 1)
[
\to
1, 4, 2, 4, 2
\to
1, 4, 2, 4, 2
\to
1, 4, 2, 4, 2
\to
1, 4, 2, 4, 2
\to
1, 4, 2, 4, 2
\to
4, 2, 4, 2
]
(因为 gcd⁡(2,1)=1\operatorname{gcd}(2, 1) = 1)
[
\to
4, 2, 4, 2
\to
\ldots
]

第三组测试数据,播放列表变化如下:
[
1, 2
\to
1, 2
\to
1
]
(因为 gcd⁡(1,2)=1\operatorname{gcd}(1, 2) = 1)
[
\to
1
\to
1
]
(Arkady 连续两次听同一首歌)
[
\to
,
]
(因为 gcd⁡(1,1)=1\operatorname{gcd}(1, 1) = 1)

第四组测试数据与第三组在删除第二首歌后相同。

第五组测试数据中,反复听同一首歌,但由于 gcd⁡(2,2)≠1\operatorname{gcd}(2, 2) \ne 1,所以不会被删除。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页