hdu 4602 Partition 题解(组合数学,推式子)

博客介绍了如何解决hdu 4602题目,涉及将一个数n拆分为若干部分,其中k出现的次数。通过分析枚举不同情况,得出计算公式,并结合快速幂模板给出解决方案。
摘要由CSDN通过智能技术生成

原题链接:
hdu

题意简述

一个数 n n n珂以被分成若干个数的和的形式。

比如 n = 4 n=4 n=4时,分解有:
4=1+1+1+1
4=1+1+2
4=1+2+1
4=2+1+1
4=1+3
4=2+2
4=3+1
4=4

然后你要求在这些个分解中, k k k出现了多少次。

数据

输入
t//数据组数(这题多组)
n k
n k
...
n k//一次,n,k<=1e9
输出
ans
ans
...
ans//输出每个的答案,要膜1e9+7
样例

输入
2
4 2
5 5
输出
5
1

思路

我们会发现,一个数 n n n中出现 k k k,可能是一下几种情况:

  1. 在中间的情况blog1.jpg
    其中 k k k是确定的,左右两边的 a , b a,b a,b满足: a , b > 0 a,b>0 a,b>0 a + b = n − k a+b=n-k a+b=nk。然后我们发现,确定了 a a a就确定了 b b b,而且 a a a是有范围的, 0 < a < n − k 0<a<n-k 0<a<n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值