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