
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 |