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,

 



 

posted on 2014-04-07 14:57  Stomach_ache  阅读(173)  评论(0)    收藏  举报

导航