hdu5916 Harmonic Value Description _找规律

 

Harmonic Value Description

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 733    Accepted Submission(s): 428
Special Judge

 

Problem Description

The harmonic value of the permutation p1,p2,⋯pn is

∑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).

 

 

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

 

 

题目大意:给你n和k(1<=k<2k<=n),求一个1~2k的排列,使得∑gcd(Ai,Ai+1)恰为第K小(等视为相同小)。

 

 

思路:【构造】这题一看2K<=2N,可能就是构造题。如果1,2,3...2N排列的话∑gcd(Ai,Ai+1)为第1小。
若要∑gcd(Ai,Ai+1)=K,只需要将2K和K提出来,将2K放在开头,K放在第二个,接下来只要满足相邻两个数仍然相差1即可。
只要将K-1~1接在K后面,把K+1~2N接在1后面,去掉2K即可。(2K-1,2K+1为奇数,gcd=1)

 

 

//
//  Created by Admin on 2017/3/12 
//
#include<cstdio>

int main(){
	int t,count=0;
	scanf("%d",&t);
	while(t--){
		int n,k;
		scanf("%d%d",&n,&k);
		printf("Case #%d: %d %d",++count,2*k,k);
		for(int i=k-1;i>=1;i--)
		   printf(" %d",i);
		for(int i=k+1;i<2*k;i++)
		   printf(" %d",i);
		for(int i=2*k+1;i<=n;i++)
		   printf(" %d",i);
		printf("\n");
	}
	return 0;
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值