3382. 整数拆分

Powered by:NEFU AB-IN

Link

3382. 整数拆分

  • 题意

    一个整数总可以拆分为 2的幂的和
    用 f(n)表示 n的不同拆分的种数,例如 f(7)=6
    要求编写程序,读入 n,输出 f(n)mod109

  • 思路

    完全背包问题 求方案数
    img

  • 代码

    '''
    Author: NEFU AB-IN
    Date: 2023-03-23 16:16:15
    FilePath: \Acwing\3382\3382.py
    LastEditTime: 2023-03-23 19:43:52
    '''
    read = lambda: map(int, input().split())
    from collections import Counter, deque
    from heapq import heappop, heappush
    from itertools import permutations
    
    N = int(1e6 + 10)
    INF = int(2e9)
    MOD = int(1e9)
    dp = [0] * N
    
    n = int(input())
    dp[0] = 1
    
    i = 1
    while i <= n:
        for j in range(i, n + 1):
            dp[j] = (dp[j] + dp[j - i]) % MOD
        i *= 2
    
    print(dp[n])
    

猜你喜欢

转载自blog.csdn.net/qq_45859188/article/details/129737992