Croper
发表于 2020-2-1 17:17:12
再来个单行版def func321(n):
return sum(1&(i^(n*2//i)) for i in range(1,int(((8*n+1)**0.5+1)//2)) if n*2%i==0)
塔利班
发表于 2020-2-1 17:17:34
def f321(n):
res=0
N=2*n
k=1
while N>k**2:
a,b=divmod(N,k)
if not b and (a-k)%2:
res+=1
k+=1
return res
zltzlt
发表于 2020-2-1 17:18:01
塔利班 发表于 2020-2-1 17:17
201 ms
冬雪雪冬
发表于 2020-2-1 17:21:19
zltzlt 发表于 2020-2-1 16:56
解答错误
输入:8
修改
def fun(n):
i = 2
count = 1
while n >= i * (i + 1) // 2:
if i % 2 !=0:
if n % i == 0:
count +=1
else:
x = 0
while i * x + 1 <= n:
if i * x + 1 == n:
count += 1
break
x += 1
i += 1
return count
zltzlt
发表于 2020-2-1 17:22:03
冬雪雪冬 发表于 2020-2-1 17:21
修改
解答错误
输入:85
输出:6
预期结果:4
TJBEST
发表于 2020-2-1 17:22:35
不来花里胡哨的,简简单单挺好
def fun321(n):
maxGate = (2*n)**(1/2)
num = 1
result = 0
while num < maxGate:
if (2*n) % num == 0:
a = (2*n)//num - (num -1)
if a % 2 ==0:
result += 1
else:
pass
else:
pass
num += 1
return result
zltzlt
发表于 2020-2-1 17:23:21
TJBEST 发表于 2020-2-1 17:22
不来花里胡哨的,简简单单挺好
111 ms{:5_109:}
冬雪雪冬
发表于 2020-2-1 17:40:51
zltzlt 发表于 2020-2-1 17:22
解答错误
输入:85
def fun(n):
i = 2
count = 1
while n >= i * (i + 1) // 2:
if i % 2 !=0:
if n % i == 0:
count +=1
else:
if (n - i // 2) % i == 0:
count+=1
i += 1
return count
zltzlt
发表于 2020-2-1 17:41:29
冬雪雪冬 发表于 2020-2-1 17:40
这下可以了,160 ms
TJBEST
发表于 2020-2-1 17:45:05
zltzlt 发表于 2020-2-1 17:23
111 ms
我有一个更快地,一会就发,思路比较清奇
TJBEST
发表于 2020-2-1 18:19:30
版主,我测了一下 这个极快 应该比其他鱼油得快一些。来测测吧{:5_109:}
import math
def fun321(n):
def split(n):
oushu = 1
jishu = 1
while n > 1:
if n % 2 ==0:
oushu = oushu * 2
n = n // 2
else:
break
jishu = n
return (jishu,oushu)
def yueshu(n):
res = []
index = 1
gate =math.floor(n ** (1/2))
while index < gate:
if n % index == 0:
res.append(index)
res.append(n//index)
else:
pass
index += 1
if n % gate==0:
res.append(gate)
return res
maxGate = (2*n)**(1/2)
jishu,oushu = split(2*n)
jiyueshu = yueshu(jishu)
result = 0
for each in jiyueshu:
if each < maxGate:
result += 1
if oushu * each < maxGate:
result += 1
else:
pass
else:
pass
return result
fan1993423
发表于 2020-2-1 22:55:28
先来个比较慢的
from sympy import solve
from sympy.abc import x
def fun321(n):
return sum()
fan1993423
发表于 2020-2-1 22:59:27
本帖最后由 fan1993423 于 2020-2-1 23:01 编辑
def fun321(n):
return sum()
这个好像要快点
zltzlt
发表于 2020-2-3 14:53:50
TJBEST 发表于 2020-2-1 18:19
版主,我测了一下 这个极快 应该比其他鱼油得快一些。来测测吧
解答错误
输入:15
输出:3
预期结果:4
zltzlt
发表于 2020-2-3 14:54:19
Croper 发表于 2020-2-1 17:17
再来个单行版
大神{:10_277:}
zltzlt
发表于 2020-2-3 14:54:39
fan1993423 发表于 2020-2-1 22:59
这个好像要快点
220 ms
zltzlt
发表于 2020-2-3 14:54:56
fan1993423 发表于 2020-2-1 22:55
先来个比较慢的
不能使用第三方库
William4869
发表于 2020-2-3 15:40:49
def f321(x):
num=1
for i in range(2,x//2+1):
if i%2:
if (x%i==0)and(x/i>=i//2+1):
num+=1
else:
if (x%(i/2)==0)and(x%i!=0)and(x//i>=i):
num+=1
return num
print(f321(8500000))
之前怎么没看到这题。。我还有币吗
zltzlt
发表于 2020-2-3 15:42:34
William4869 发表于 2020-2-3 15:40
def f321(x):
num=1
for i in range(2,x//2+1):
解答错误
输入:3
输出:1
预期结果:2
fan1993423
发表于 2020-2-3 15:47:31
zltzlt 发表于 2020-2-3 14:54
不能使用第三方库
sympy是第三方库吗?我以为是自带的库