[蓝桥杯python] 数的潜能:将一个数N分为多个正整数之和,即N=a1+a2+a3+…+ak,定义M=a1*a2*a3*…*ak为N的潜能。 给定N,求它的潜能M。 由于M可能过大,只需求

该博客探讨了一道关于计算数的潜能的Python编程问题。问题要求将一个正整数N拆分为多个正整数之和,并计算这些数的乘积,即潜能M,然后对5218取模。作者尝试了回溯和数学归纳两种方法,但遇到时间和计算限制。提供的代码示例中,递归方法在深度较大时无法运行,而归纳方法仅能解决部分情况。博主邀请读者提供更优解决方案,并鼓励大家互动交流。
摘要由CSDN通过智能技术生成

[蓝桥杯python] 数的潜能

问题描述

1、资源限制

2、输入格式

3、输出格式

4、样式输入及输出

5、代码及解析

大功告成!编写不易,大家成功后点个关注or赞谢谢~~


问题描述

  将一个数N分为多个正整数之和,即N=a1+a2+a3+…+ak,定义M=a1*a2*a3*…*ak为N的潜能。
  给定N,求它的潜能M。
  由于M可能过大,只需求M对5218取模的余数。


1、资源限制

资源限制

时间限制:1.0s   内存限制:256.0MB

2、输入格式

输入共一行,为一个正整数N。

3、输出格式

输出共一行,为N的潜能M对5218取模的余数。

4、样式输入及输出

样例输入

10

样例输出

36

5、代码及解析

具体解析请大家自己看一下代码中的备注,在此不多做解释。

本题首先我是使用回溯的方法来解决,但是深度达不到因此后面运行报错。后面又利用数学归纳来解决,但是只能完成40%所以无能为力.....如果有人解决发一下更好的答案一起加油谢谢!!

'''
   这道题有个规律就是,尽量把一个数变为2和3的和
   这样乘积的值最大化,但是以下代码超过5218就会出错。
   因此以下两个代码。第一个的话是全部正确但是递归深度
   超过1000后就不能运行。第二个的话就是开头的问题
'''
'''递归'''
'''
n = int(input())

result = 0
mid = []

def DFS(nums):
    global result,mid
    if nums > n:
        return
    if nums == n:
        mid_result = 1
        for i in range(len(mid)):
            mid_result = mid_result * mid[i]
        if mid_result >= result:
            result = mid_result
        return
    for j in range(2):
        nums += j+2
        mid.append(j+2)
        DFS(nums)
        nums -= j+2
        mid.pop()
if n == 1:
    print(1)
else:
    DFS(0)
    print(result)
'''

'''归纳'''
'''
n = int(input())

f = 3
if n==1:
    print(1)
elif n==2:
    print(2)
elif n==3:
    print(3)
else:
    for i in range(4,n+1):
        if (i-1)%3 == 0:
            f = f//3*4
        else:
            f = f//2*3
    print(f%5218)
'''

结果:

 


 自己写的所以有点复杂,但是至少能完成嘿嘿。如果各位有优化欢迎评论区讨论!!

大功告成!编写不易,大家成功后点个关注or赞谢谢~~


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Callme_TeacherPi℡

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值