鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖

[技术交流] Python:每日一题 392

[复制链接]
 楼主| 发表于 2020-5-15 12:46:17 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-5-15 12:51 编辑
March2615 发表于 2020-5-15 10:59
感谢指出
1. n,k不互质是否就指n和k有大于1的公因子?那有什么问题呢?我暂时没想到,你可以告诉我一下
...


2.错误,是 k 分解质因数的结果只有 2 和 5,n/k 才是有限小数。举例:30。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:06:14 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-15 12:46
2.错误,是 k 分解质因数的结果只有 2 和 5,n/k 才是有限小数。举例:30。

OK 我的 这就去改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 13:08:27 | 显示全部楼层
咸鱼c1 发表于 2020-5-13 23:22
刚刚开始学python,不知道做的对不对

做的没什么问题,但是不要用 1e6 1e7 什么的,浮点数有误差。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2020-5-15 21:13:42 | 显示全部楼层
from fractions import Fraction
from math import gcd
def S(a,b):
    def m(n):
        k = 2
        while n/(k+1)*(k/(k+1))**k>1:
            k += 1
        return [n**k,k**k]
    
    def judge_num(in_num):
        l = []
        while in_num > 1:
            for i in range(2, in_num+1):
                if in_num % i == 0:
                    in_num = in_num // i
                    l.append(str(i))
            break
        for x in l:
            if x!='2' and x!='5':
                return False
            else:
                return True
    def inf(x,y):
        res=Fraction(x,y)
        fm=res.denominator
        if judge_num(fm):
            return False
        else: return True
    def d(n):
        if inf(m(n)[0],m(n)[1]):
            return "%.6f" % (m(n)[0]/m(n)[1])
        else:
            return "%.7f" % (-m(n)[0]/m(n)[1])
            
    L=[d(i) for i in range(a,b+1)]
    print(L)
    return sum([float(i) for i in L])

print(S(5,10))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 21:24:48 | 显示全部楼层

已经结帖了
不过为什么你要转字符串呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 17:21:49 | 显示全部楼层
“将 正整数 那平分为 k 份” 的这个 k 应该是个整数,对吧?就我的常识判断来说,份是个整数量词。
那么当 n = 4 的时候,取得 m(n) 的 k 有两个,1 和 2,此时 m(n) 为 4.0 ,若 k 取 1 则 d(n) 为 -1,若 k 取 2 则 d(n) 为 -65536,这种情况怎么算呢?
是都加上,还是 1 个 n 只对应一个 d(n)?若是后者,这 k 怎么取?
我还得研究研究 a^(a^(a^(a^(...)))) 的末尾的规律,研究不出来的话,这题我就做不了,用时会特别长。一个月没来做题,难度居然上涨的这么夸张吗?!

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

使用道具 举报

发表于 2020-5-25 17:23:19 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-15 21:24
已经结帖了
不过为什么你要转字符串呢

惊!结贴是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 17:44:55 | 显示全部楼层
阴阳神万物主 发表于 2020-5-25 17:21
“将 正整数 那平分为 k 份” 的这个 k 应该是个整数,对吧?就我的常识判断来说,份是个整数量词。
那么 ...

“将 正整数 那平分为 k 份” 的这个 k 应该是个整数,对吧?就我的常识判断来说,份是个整数量词。
那么当 n = 4 的时候,取得 m(n) 的 k 有两个,1 和 2,此时 m(n) 为 4.0 ,若 k 取 1 则 d(n) 为 -1,若 k 取 2 则 d(n) 为 -65536,这种情况怎么算呢?
是都加上,还是 1 个 n 只对应一个 d(n)?若是后者,这 k 怎么取?
我又漏了 a>=5 这个条件……


直接跟你说了末尾规律吧,快速幂取模。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 00:14:08 | 显示全部楼层
难度评级:中等偏上
要素分析:数论
代码:
def S(a,b,which=0):#which这个参数是我对于题目理解在一点细节处理上的的分歧。
    e = 2.71828459
    def gcb(c,d):#辗转相除法
        while d:c,d = d,c%d
        return c
    def m(n):
        l = int(n/e)
        r = l + 1
        k = l if (n/l)**l > (n/r)**r else r
        k1 = k/gcd(n,k)
        while (g:=k1/5)==int(g):k1=g
        while (g:=k1/2)==int(g):k1=g
        lim = int(k1 == 1)+5
        return (k,lim)
    def f(k,n,l):
        m = 10**l
        u = k
        for i in range(n):
            down = k
            uns = 1
            while u:#楼主提示的快速幂取模
                if u&1:uns = (uns*d)%m
                down = (down**2)%m
                u >>= 1
            u = uns
        return u
    def d(n):
        k,lim = m(n)
        get = f(k,n,lim+1)
        if which and lim-5:get*=-1
        elif not which:
            l = 10**lim
            if lim&1:get*=(-1**int(bool(get%l)))
        return get
    res = 0
    for n in range(a,b+1):
        res += d(n)
    return res
备注:which 参数是一个 bool 值,为命题 {m(n)为有限小数时,d(n)取值一定为负} 的真假性。
我理解的分歧是
d(n)=-f(k,n) 的最后 7 位

意思是 d(n)=[ -f(k,n) ] 的最后 7 位
还是 d(n)=- [f(k,n) 的最后 7 位 ]
例:若 f(k,n) = 123456789 ,则
3456789 = [-123456789] 的最后七位
-3456789 =- [123456789 的最后 7 位 ]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 15:42:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-10 20:17:06 | 显示全部楼层
怎么做题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-4 00:14:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-21 16:05:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-9 10:21:46 | 显示全部楼层
找答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-12 17:36:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 19:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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