import sys
def func1(sum, num):
if sum > 0 & num > 0 & int(sum) == sum & int(num) == num:
beg = (sum * 2 / num - num + 1) / 2
if beg % 1 == 0 & beg != 0:
return [i for i in range(int(beg), int(beg) + num)]
else:
return -1
else:
return -1
for line in sys.stdin:
a = line.split()
if len(a) != 2:
print(-1)
sum, num = a[0], a[1]
if type(int(sum)) == type(int(num)) == type(1):
print(func1(int(sum), int(num)))
else:
print(-1)
1
LewisHorse 2020-12-14 10:55:07 +08:00 via Android
判断无结果的条件是怎么写的?
|
2
6167 OP |
3
xsonglive491 2020-12-14 14:45:18 +08:00
你直接判断 beg 是否是正整数就行了,(2*sum/num-num+1)为大于 0 的偶数
|
4
6167 OP @xsonglive491 这个有,只考虑这一项才通过 35%
|
5
xsonglive491 2020-12-14 18:13:59 +08:00
@6167 num <=0 or num*num > 2* sum or (2*sum/num-num+1) %2 !=0 :return -1
|
6
zhucegeqiu 2020-12-16 15:31:53 +08:00
很简单啊,beg = s/n - (n-1)/2
是大于等于 0 的整数就行 |
7
lidlesseye11 2020-12-16 18:28:01 +08:00
通过率是啥意思,测试 case 吗?那失败的 case 不给告诉的吗?
另外建议楼主直接放出自己写的原版整段代码。。你这连用的什么语言都不知道。 数学上是不难,可能是语言有什么特性哪里计算错了呢? |
8
6167 OP |