Codeforces 414A

题目链接

首先考虑无解的情况: n / 2 > k 或者 n==1 且 k != 0 (因为两个数的最大公约数最小为1)

然后因为有 n / 2 组(把 a[i] 和 a[i+1] 看成一组), 所以我可以试 a[1] 和 a[2]的最大公约数为 k - n / 2 + 1, 这样后面的每个组只需要为1,就可以满足条件, 

所以前面两个数可以为: k - n / 2 + 1 和 2 * (k - n / 2 + 1), 这样他们的最大公约数就是 k - n / 2 + 1


附上代码:

 1 n, k = map(int, raw_input().split())
 2 if n / 2 > k or (n == 1 and k != 0):
 3     print -1
 4 elif n / 2 == k:
 5     for i in xrange(n):
 6         print i + 1,
 7 else:
 8     tmp = k - n / 2 + 1
 9     print tmp, tmp << 1,
10     tmp *= 2; 
11     for i in xrange(n-2):
12         print tmp + i + 1,

 



 

转载于:https://www.cnblogs.com/Stomach-ache/p/3703250.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值