鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[已解决]Python:每日一题 321

[复制链接]
发表于 2020-2-1 17:17:12 From FishC Mobile | 显示全部楼层
再来个单行版
  1. def func321(n):               
  2.     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)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 17:17:34 | 显示全部楼层
  1. def f321(n):
  2.     res=0
  3.     N=2*n
  4.     k=1
  5.     while N>k**2:
  6.         a,b=divmod(N,k)
  7.         if not b and (a-k)%2:
  8.             res+=1
  9.         k+=1
  10.     return res
复制代码

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
zltzlt + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 17:18:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 17:21:19 | 显示全部楼层
zltzlt 发表于 2020-2-1 16:56
解答错误

输入:8

修改
  1. def fun(n):
  2.     i = 2
  3.     count = 1
  4.     while n >= i * (i + 1) // 2:
  5.         if i % 2 !=0:
  6.             if n % i == 0:
  7.                 count +=1
  8.         else:
  9.             x = 0
  10.             while i * x + 1 <= n:
  11.                 if i * x + 1 == n:
  12.                     count += 1
  13.                     break
  14.                 x += 1

  15.         i += 1
  16.     return count
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 17:22:03 | 显示全部楼层

解答错误

输入:85
输出:6
预期结果:4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 17:22:35 | 显示全部楼层
不来花里胡哨的,简简单单挺好
  1. def fun321(n):
  2.     maxGate = (2*n)**(1/2)
  3.     num = 1
  4.     result = 0
  5.     while num < maxGate:
  6.         if (2*n) % num == 0:
  7.             a = (2*n)//num - (num -1)
  8.             if a % 2 ==0:
  9.                 result += 1
  10.             else:
  11.                 pass
  12.         else:
  13.             pass
  14.         num += 1
  15.     return result
复制代码

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
zltzlt + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 17:23:21 | 显示全部楼层
TJBEST 发表于 2020-2-1 17:22
不来花里胡哨的,简简单单挺好

111 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 17:40:51 | 显示全部楼层    本楼为最佳答案   
zltzlt 发表于 2020-2-1 17:22
解答错误

输入:85
  1. def fun(n):
  2.     i = 2
  3.     count = 1
  4.     while n >= i * (i + 1) // 2:
  5.         if i % 2 !=0:
  6.             if n % i == 0:
  7.                 count +=1
  8.         else:
  9.             if (n - i // 2) % i == 0:
  10.                 count+=1
  11.         i += 1
  12.     return count
复制代码

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
zltzlt + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 17:41:29 | 显示全部楼层

这下可以了,160 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 17:45:05 | 显示全部楼层

我有一个更快地,一会就发,思路比较清奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 18:19:30 | 显示全部楼层
版主,我测了一下 这个极快 应该比其他鱼油得快一些。来测测吧
  1. import math
  2. def fun321(n):
  3.     def split(n):
  4.         oushu = 1
  5.         jishu = 1
  6.         while n > 1:
  7.             if n % 2 ==0:
  8.                 oushu = oushu * 2
  9.                 n = n // 2
  10.             else:
  11.                 break
  12.         jishu = n
  13.         return (jishu,oushu)
  14.     def yueshu(n):
  15.         res = []
  16.         index = 1
  17.         gate =math.floor(n ** (1/2))
  18.         while index < gate:
  19.             if n % index == 0:
  20.                 res.append(index)
  21.                 res.append(n//index)
  22.             else:
  23.                 pass
  24.             index += 1
  25.         if n % gate==0:
  26.             res.append(gate)
  27.         return res
  28.         
  29.     maxGate = (2*n)**(1/2)
  30.     jishu,oushu = split(2*n)
  31.     jiyueshu = yueshu(jishu)
  32.     result = 0
  33.     for each in jiyueshu:
  34.         if each < maxGate:
  35.             result += 1
  36.             if oushu * each < maxGate:
  37.                 result += 1
  38.             else:
  39.                 pass
  40.         else:
  41.             pass
  42.            
  43.     return result
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 22:55:28 | 显示全部楼层
先来个比较慢的
  1. from sympy import solve
  2. from sympy.abc import x
  3. def fun321(n):
  4.     return sum([1 for i in range(1,int(max(solve(x**2+x-2*n,x)))+1) if not (2*n+i-i**2)%(2*i)])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 22:59:27 | 显示全部楼层
本帖最后由 fan1993423 于 2020-2-1 23:01 编辑

  1. def fun321(n):
  2.     return sum([1 for i in range(1,int((8*n+1)**0.5+1)//2) if not (2*n+i-i**2)%(2*i)])
复制代码

这个好像要快点

评分

参与人数 1荣誉 +8 鱼币 +8 收起 理由
zltzlt + 8 + 8

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 14:53:50 | 显示全部楼层
TJBEST 发表于 2020-2-1 18:19
版主,我测了一下 这个极快 应该比其他鱼油得快一些。来测测吧

解答错误

输入:15
输出:3
预期结果:4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 14:54:19 | 显示全部楼层

大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 14:54:39 | 显示全部楼层

220 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 14:54:56 | 显示全部楼层

不能使用第三方库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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))

之前怎么没看到这题。。我还有币吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 15:47:31 | 显示全部楼层
zltzlt 发表于 2020-2-3 14:54
不能使用第三方库

sympy是第三方库吗?我以为是自带的库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-27 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表