题目地址:点击打开链接
题意:
给你N和K(1<=K<2K<=2N),求一个1~2N的排列,使得∑gcd(Ai,Ai+1)恰为
第K小(相等视为相同小)。
思路:
连续的序列,两两之间的gcd一定是1,所以k=1,即最小的就可以直接为1-n直接升序。
当k不为1时,有可能的情况是某两个数之间gcd变成了k,而其他任意的两两gcd任然为1。直接拿这一种情况去构造,简单起见,让第一组gcd变成k,又要让后面的gcd都还为1,我们可以这样构造2*k, k, k-1, k-2...1, k+1, k+2...2*k-1, 2*k+1, 2*k+2...n
用到了两个连续的数的gcd肯定是1这个性质。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(void)
{
int n, k, t, ca = 1;
cin >> t;
while(t--)
{
scanf("%d%d", &n, &k);
printf("Case #%d:", ca++);
printf(" %d %d", k*2, k);
for(int i = k-1; i >= 1; i--) printf(" %d", i);
for(int i = k+1; i <= n; i++)
if(i != 2*k) printf(" %d", i);
printf("\n");
}
return 0;
}
Harmonic Value Description
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 692 Accepted Submission(s): 405
Special Judge
Problem Description
The harmonic value of the permutation
p1,p2,⋯pn
is
Mr. Frog is wondering about the permutation whose harmonic value is the strictly k-th smallest among all the permutations of [n].
∑i=1n−1gcd(pi.pi+1)
Mr. Frog is wondering about the permutation whose harmonic value is the strictly k-th smallest among all the permutations of [n].
Input
The first line contains only one integer T (
1≤T≤100
), which indicates the number of test cases.
For each test case, there is only one line describing the given integers n and k ( 1≤2k≤n≤10000 ).
For each test case, there is only one line describing the given integers n and k ( 1≤2k≤n≤10000 ).
Output
For each test case, output one line “Case #x:
p1 p2 ⋯ pn
”, where x is the case number (starting from 1) and
p1 p2 ⋯ pn
is the answer.
Sample Input
2 4 1 4 2
Sample Output
Case #1: 4 1 3 2 Case #2: 2 4 1 3
Source
Recommend
wange2014