鱼C论坛

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

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

[复制链接]
发表于 2020-3-31 22:12:02 | 显示全部楼层
def f364(target):
    target = abs(target)
    n = 0
    for i in range(1, target+2):
        n += i
        if n == target:
            return i
        elif n > target and (n-target)%2==0:
            return i

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-31 23:26:21 | 显示全部楼层
先占个楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 01:43:58 | 显示全部楼层
#使用递归的思路解题,不知道速度会不会拖得太慢
def f364(num, list1 = [1], count = 1):
    if num in list1:
        return count
    else:
        list2=[]
        count += 1
        for each in list1:
            list2.append(each + count)
            list2.append(each - count)

        return f364(num, list2, count)

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-4-1 13:23:42 | 显示全部楼层
TJBEST 发表于 2020-3-31 17:35
我昨天的363题做出来了,我写在这里也给测一下吧
旧 363题

通过了,52 ms

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

使用道具 举报

 楼主| 发表于 2020-4-1 13:25:26 | 显示全部楼层
chen971130 发表于 2020-3-31 18:51
# 思路:先一直走到target之前或之后,(或直接到target),
# 然后分别反复移动到target(每移动一格需 ...

解答错误

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

使用道具 举报

 楼主| 发表于 2020-4-1 13:26:18 | 显示全部楼层
Herry2020 发表于 2020-3-31 20:07
def fun364(target):
    sum = 0
    n = 1

解答错误

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2020-4-1 13:27:25 | 显示全部楼层
sunrise085 发表于 2020-3-31 21:05
我把下午写的修改了一下,while循环最多需要两次

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2020-4-1 13:57:22 | 显示全部楼层
def f(n):
    x = 0
    while x*(x+1)/2 < n or (x*(x+1)/2-n)%2 or (x*(x+1)/2-n)/2 == 2:
        x += 1
    return x

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-1 16:19:44 | 显示全部楼层
zltzlt 发表于 2020-4-1 13:25
解答错误

输入:-1
def min_step(target):
    target = abs(target)
    count = 1
    sum1 = 0
    while sum1 < target:
        sum1 = sum1 + count
        count += 1
    if sum1 == target:
        print(count - 1)
    else:
        number1 = (target-sum1+count-1)*2 + count - 2
        number2 = (sum1-target)*2 + count - 1
        print(min([number1,number2]))
min_step(3)

那就再加个绝对值就好啦

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-1 16:45:05 | 显示全部楼层
def fun364(target):
        t = abs(target)
        k = 0
        s = 0
        while s < t:
            k += 1
            s += k
        dt = s - t
        if dt % 2 == 0:
            return k
        else:
            if k % 2 == 0:
                return k + 1
            else:
                return k + 2
363题实在是看不懂题目,只好来做364

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-4-1 17:46:30 | 显示全部楼层

解答错误

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

使用道具 举报

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

解答错误

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

使用道具 举报

 楼主| 发表于 2020-4-1 17:53:04 | 显示全部楼层
chen971130 发表于 2020-4-1 16:19
那就再加个绝对值就好啦

解答错误

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

使用道具 举报

 楼主| 发表于 2020-4-1 18:59:40 | 显示全部楼层
蒋博文 发表于 2020-4-1 16:45
363题实在是看不懂题目,只好来做364

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

使用道具 举报

发表于 2020-4-1 19:40:47 | 显示全部楼层
本帖最后由 风魔孤行者 于 2020-4-1 19:44 编辑
zltzlt 发表于 2020-4-1 17:48
解答错误

输入:2

def f(n):
    n = abs(n)
    x = 0
    while x*(x+1)/2 < n or (x*(x+1)/2-n)%2:
        x += 1
    return x
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 20:37:47 | 显示全部楼层
zltzlt 发表于 2020-4-1 17:46
解答错误

输入:-1

题目中,这句话<第 n 次移动(从 1 开始)可以走 n 步。>意思理解有偏差,理解为:每次第一步都先移动到1的意思了。只需将代码中函数内list1的初始值[1]改为[-1,1]即可。
def f364(num, list1 = [-1,1], count = 1):
    if num in list1:
        return count
    else:
        list2=[]
        count += 1
        for each in list1:
            list2.append(each + count)
            list2.append(each - count)

        return f364(num, list2, count)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 18:02:24 | 显示全部楼层

这个为什么可以这样算啊,真的神奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 13:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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