首页 > 其他分享 >CF1828A

CF1828A

时间:2023-09-15 15:58:48浏览次数:24  
标签:case le CF1828A divisible int test array

Divisible Array

题面翻译

构造一个长度为 \(n\) 的序列 \(a\) 满足以下条件。

  • 对于每个元素 \(a_i\) 满足 \(a_i \le 1000\)。
  • 对于每个元素 \(a_i\) 满足 \(a_i \equiv 0 \pmod i\)。即每个元素 \(a_i\) 能被 \(i\) 整除。
  • 满足 \(\sum_{i = 1}^{n} a_i \equiv 0 \pmod n\)。即所有元素之和能被 \(n\) 整除。

\(n \leq 200\)。

题目描述

You are given a positive integer $ n $ . Please find an array $ a_1, a_2, \ldots, a_n $ that is perfect.

A perfect array $ a_1, a_2, \ldots, a_n $ satisfies the following criteria:

  • $ 1 \le a_i \le 1000 $ for all $ 1 \le i \le n $ .
  • $ a_i $ is divisible by $ i $ for all $ 1 \le i \le n $ .
  • $ a_1 + a_2 + \ldots + a_n $ is divisible by $ n $ .

输入格式

Each test contains multiple test cases. The first line contains the number of test cases $ t $ ( $ 1 \le t \le 200 $ ). The description of the test cases follows.

The only line of each test case contains a single positive integer $ n $ ( $ 1 \le n \le 200 $ ) — the length of the array $ a $ .

输出格式

For each test case, output an array $ a_1, a_2, \ldots, a_n $ that is perfect.

We can show that an answer always exists. If there are multiple solutions, print any.

样例 #1

样例输入 #1

7
1
2
3
4
5
6
7

样例输出 #1

1
2 4
1 2 3
2 8 6 4
3 4 9 4 5
1 10 18 8 5 36
3 6 21 24 10 6 14

提示

In the third test case:

  • $ a_1 = 1 $ is divisible by $ 1 $ .
  • $ a_2 = 2 $ is divisible by $ 2 $ .
  • $ a_3 = 3 $ is divisible by $ 3 $ .
  • $ a_1 + a_2 + a_3 = 1 + 2 + 3 = 6 $ is divisible by $ 3 $ .

In the fifth test case:

  • $ a_1 = 3 $ is divisible by $ 1 $ .
  • $ a_2 = 4 $ is divisible by $ 2 $ .
  • $ a_3 = 9 $ is divisible by $ 3 $ .
  • $ a_4 = 4 $ is divisible by $ 4 $ .
  • $ a_5 = 5 $ is divisible by $ 5 $ .
  • $ a_1 + a_2 + a_3 + a_4 + a_5 = 3 + 4 + 9 + 4 + 5 = 25 $ is divisible by $ 5 $ .

分析

要求a[i] % i == 0 && (a[1] + a[2] + ... + a[n]) % n == 0
任何数都能被1整除,那我们让a[i] = i,最后的差由a[1]来补齐,又因为要求a[i] >= 1,避免a[1] == 0的情况出现,我们令a[1] += n,这样总和仍能被n整除

代码

#include <iostream>
using namespace std;
const int N = 210;
int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		int n;
		scanf("%d", &n);
		if (n == 1)
		{
			printf("1\n");
			continue;
		}
		int res = (n - 1) * (n + 2) / 2;
		printf("%d ", 2 * n - (res % n));
		for (int i = 2; i <= n; i++)
			printf("%d ", i);
		printf("\n");
	}
}

标签:case,le,CF1828A,divisible,int,test,array
From: https://www.cnblogs.com/beishangeyu/p/17705164.html

相关文章