HDU 4602 Partition (整数拆分&找规律&快速幂取模)

Kimi K3登顶Frontend Code Arena:国产大模型如何实现代码生成从能用向好用的跨越? 代码生成是人工智能自然语言处理技术的重要应用方向,其核心原理是通过预训练语言模型理解开发者意图并生成可执行代码。这项技术的价值在于显著提升软件开发效率,降低重复性编码工作负担。在实际应用场景中,优秀的代码生成模型需要具备对项目上下文的理解能力,能够适配特定技术栈和代码规范。Kimi K3作为国产大模型的代表,在Frontend Code Arena榜单上的卓越表现,特别是在处理复杂前端项目时展现出的意图理解能力,标志着大模型正从通用能力向垂直领域深度优化迈进。这种专用化发展趋势为开发者提供了更精准的AI辅助 阅读详情

Partition



Time Limit: 2000/1000 MS (Java/Others)    

Memory Limit: 32768/32768 K (Java/Others)



Problem Description
Define f(n) as the number of ways to perform n in format of the sum of some positive integers. For instance, when n=4, we have
  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
totally 8 ways. Actually, we will have f(n)=2 (n-1) after observations.
Given a pair of integers n and k, your task is to figure out how many times that the integer k occurs in such 2 (n-1) ways. In the example above, number 1 occurs for 12 times, while number 4 only occurs once.
 

Input
The first line contains a single integer T(1≤T≤10000), indicating the number of test cases.
Each test case contains two integers n and k(1≤n,k≤10 9).
 

Output
Output the required answer modulo 10 9+7 for each test case, one per line.
 

Sample Input
  
2 4 2 5 5
 

Sample Output
  
5 1


1. 观察发现n的分拆中n出现了1次,n-1出现了2次,n-2出现了5次,……,这一发现是否正确?

这样想:n出现了1次不用说;n-1出现了2次是因为剩下那个数是1,它只能和n-1有两种组合,或者当n=2时变成1+1,那也有2个数;n-2出现了5次是因为剩下的数2可以与n-2有3+2种组合,……


那么,记a1=1,a2=2,a3=5,...,我们的目标就是求出an。


2. 如何求出an?

利用公式:an=Sn-Sn-1


3. 如何求出Sn?

考虑将n分成k个正数,由插空法知有C(n-1,k-1)种分法(或者:这等价于方程x1+x2+...+xk = n-k的非负解的个数,亦等价于从k种不同的物品中允许重复地选出n-k个物品的方法数),于是求出总个数Sn:


4. 注意n,k可能较大,要使用快速幂取模。

完整代码:

/*31ms,228KB*/

#include<cstdio>
const int mod = 1000000007;

__int64 pow(__int64 a, __int64 b)///a^b % mod
{
	__int64 r = 1, base = a;
	while (b)
	{
		if (b & 1)
			r = r * base % mod;
		base = base * base % mod;
		b >>= 1;
	}
	return r;
}

int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		int n, k;
		scanf("%d%d", &n, &k);
		if (k > n)
			puts("0");
		else
		{
			int temp = n + 1 - k;
			if (temp == 1)
				puts("1");
			else if (temp == 2)
				puts("2");
			else
				printf("%I64d\n", (temp + 2) * pow(2, temp - 3) % mod) ;
		}
	}
	return 0;
}


Halcon Socket TCP通讯:从算子调用到工业视觉系统集成 本文详细介绍了Halcon Socket TCP通讯在工业视觉系统中的应用与优化技巧。从基础算子调用到高并发处理,再到与PLC、机器人及MES系统的集成实战,提供了全面的解决方案和性能优化建议,帮助开发者高效实现工业视觉系统的通讯需求。 阅读详情

相关推荐

基于verilog的16QAM调制

思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2-&gt;4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差...

weixin_30725467的博客 2929

hdu 4602 Partition 数学(组合-隔板法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4602 我们可以特判出n&lt;=k的情况。 对于1&lt;=k&lt;n,我们可以等效为n个点排成一列,并取出其中的连续k个点。下面分两种情况考虑: 第一种情况,被选出的不包含端点,那么有(n–k−1)种情况完成上述操作,剩下未被圈的点之间还有(n–k−2)个位置,可以在每个位置断开,所...

weixin_30692143的博客 131

告别重复劳动:用Python+pywinauto打造你的微信个人助理(自动回复/收款/定时发消息)

本文介绍如何利用Python和pywinauto库构建微信个人助手,实现自动回复、定时消息、智能收款等功能,告别重复劳动。通过详细的代码示例和配置指南,帮助开发者快速掌握微信自动化技术,提升工作效率。

weixin_42568801的博客 330

hdu 4602 Partition

连接:http://acm.hdu.edu.cn/showproblem.php?pid=4602 题目大意是给你一个数的N的加法构成中另外一个数k的出现次数。如 4=1+1+1+14=1+1+24=1+2+14=2+1+14=1+34=2+24=3+14=4 1出现了12次。 这题是赵鹏搞出来的。一个数N可以分成好N个块,如果说N= 5,K= 2 那么则会...

weixin_30367543的博客 93

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

m0_69718028的博客 8116

Android软键盘系统深度解析:架构、原理与实现

Android软键盘系统深度解析:架构与实现原理 本文系统剖析了Android软键盘的核心工作机制。作为系统级输入服务,软键盘具有双重属性:既是可安装的独立应用,又深度集成于系统框架中。文章详细解读了软键盘的系统架构,包括其与InputMethodManagerService(IMMS)和WindowManagerService(WMS)的交互机制,以及通过InputConnection实现的跨进程通信流程。同时分析了输入法窗口的特殊管理策略、布局调整模式,并深入探讨了输入预测引擎的实现原理,包括词典加载、

保持专注,保持热爱 115

HDU - 4602 - Partition

先上题目 Partition Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1697Accepted Submission(s): 688 Problem Description Define f(n) as the nu...

weixin_30455023的博客 123

ComfyUI 局部重绘工作流示例

本文介绍了使用ComfyUI进行图像局部重绘的基础工作流程,重点讲解如何修改人物眼睛颜色和表情。主要内容包括:1.准备工作(可选下载DreamShaperv8模型);2.加载素材图片和工作流文件;3.使用遮罩编辑器绘制需要修改的区域;4.修改提示词控制生成内容;5.调整denoise参数优化效果。教程提供了详细的提示词示例(如&quot;smile,blackeyes&quot;等)和参数设置建议,帮助用户通过多次尝试获得理想效果。该工作流适用于修改图像局部区域而不影响整体画面。

云域A的博客 331

hdu4602(快速幂)

Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 258    Accepted Submission(s): 127 Problem Description Define f(n) as the num

晓风残月xj 1067

【突变检验方法一】MATLAB实现Pettitt突变检验

MATLAB实现Pettitt突变检验及贝叶斯突变检测等

WW、forever的博客 1万+

2026.4.15:超详细自动安装Ubuntu-Server的保姆级教程

这篇教程详细介绍了如何创建无人值守的Ubuntu Server 26.04自动安装镜像。主要内容包括:从安装镜像中提取autoinstall-user-data文件并修改为user-data配置文件;使用mkpasswd生成加密密码;通过软碟通工具修改ISO镜像,添加自动安装所需的user-data和meta-data文件;编辑grub.cfg引导文件以启用自动安装模式。教程提供了完整的yaml配置示例,包含网络、存储、用户等设置,并演示了最终制作完成的自动安装镜像效果。

拥抱具身智能,昇腾Ascend C 745

【HDU 4602】Partition

题意 给你一个数n,把它写成几个正整数相加的形式,即把n拆开成若干段,把所有可能的式子里正整数 k 出现的次数取模是多少。 分析 特判 k&gt;=n 的情况。 k&lt;n时:问题相当于n个点排一行,选其中连续的k个点,其他点的间隔情况有多少种。 n个点原来有n-1个两两之间的间隔,当n-k&gt;1时,如果k个点不包含端点,那么剩下的间隔就是:n-1 -(k+1)=n-...

dingguayi7025的博客 121

华为 MetaERP 通过元数据驱动的多组织架构 + 内部交易协同 + 自动对账引擎 + 合并规则引擎,实现多组织内部往来与合并报表的全流程自动抵消,核心是源头标准化、过程自动化、结果可追溯

摘要: 华为MetaERP通过元数据驱动的多组织架构与主数据标准化,实现内部往来与合并报表全流程自动化。其核心包括:统一组织模型与主数据(确保数据口径一致)、内部交易协同(自动生成对称凭证)、智能对账引擎(多维度自动匹配差异)、合并规则引擎(配置化抵消模板)。依托GaussDB高性能数据库与流批一体架构,华为全球88家子公司合并报表效率提升400%,关账时间缩短至2小时,支持多准则、多币种自动抵消,审计全程可追溯。相比传统ERP,MetaERP在协同性、自动化与扩展性上优势显著,为跨国集团提供高效、准确的合

金牌架构师 264

hdu4602 Partition 快速幂

传送门 记录一下…… 题意:通过隔板法,可以把一个数n能拆分成2^(n-1)种方式,给定一个k,问n的所有拆分中有几个k,结果模1e9+7 思路:相当于有一排1,捆绑了k个数,然后看其他的数有多少种拆分方式,如果k个数在两边,那么另外的n-k个数就有2^(n-k-1)种拆分方式,总共有2种情况;如果k个数在中间,那么其它n-k个数总共有2^(n-k-2)种排列方式,总共有n-k-1种情况,这

竹丙丙丙丙 278

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

原题链接: hdu 题意简述 一个数nnn珂以被分成若干个数的和的形式。 比如n=4n=4n=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 然后你要求在这些个分解中,kkk出现了多少次。 数据 输入 t//数据组数(这题多组) n k n k ... n k//一次,n,k&lt;=1e9 输出 ans ans...

LightningUZ的博客 289

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HDU-4602 partition 找规律

分析: 看了解题报告,先没看懂,后来恍然大悟。 但k>n 显然是不存在的答案为0; 当1 分两种情况讨论, 取k个连续的点不包含端点。在n个位置区k个连续的点有n-1-k种,在就是把剩余的n-k-2位置任意分割,相当于n-k-2任意拆分,根据题意提供f(n)=2^n。 很快就得到(n-k-1)*2^(n-k-2); 如果含有端点,最前和最后,有2种,那么就有2*2^(n-k-1) 加

ZXLS-ZMR的专栏 715

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HDU 4602 Partition 解题报告

题目: 对整数n进行无序拆分,求数k在拆分中出现了多少次。 方法一:打表找规律,很靠谱! 正解:把整数n一个无序拆分可以看成把n个点排成一列,在点与点之间插若干个空,数k就相当于k个连续的点。 分两种情况考虑: 1) n=k+......或者n=......+k,那么剩余的(n-k-1)位置可以插或者不插空,即2×2^(n-k-1)种方法 2) n=...+k+...,那么k可以选择(

Tri_integral的专栏 1275

2013 多校第一场 hdu 4602 Partition

hdu 4602 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4602 题目大意:将一个数 n 拆分,问所有的拆分组合中 K 出现了几次。 思路:我们可以特判出n 代码如下: #include #include #include using namespace std; const int MOD = 1e9+7; typedef __

沉溺的专栏 895

HDU 4602 Partition

http://acm.hdu.edu.cn/showproblem.php?pid=4602 可以发现,1的拆分里面有1个1,2有2个1,3有5个1,4有12个1, 形成一个数列:1,2,5,12,28,64。。。 然后2的拆分里有1个2,3有2个2,4有5个2, 又是这个数列:1,2,5,12,28,64。。。 记f(n)为N的拆分中有多少个1。。 n>=3时 , f(n)=f(n-

long long ago 1116

HDU 4602 Partition (矩阵快速幂或求通项)

PartitionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3462 Accepted Submission(s): 1348Problem Description Define f(n) as the number of

ftx456789的博客 405

hdu 4602 Partition(矩阵快速幂乘法)

Problem Description Define f(n) as the number of ways to perform n in format of the sum of some positive integers. For instance, when n=4, we have 4=1+1+1+1 4=1+1+2 4=1+2+1 4=2+1+1 ...

weixin_30247159的博客 98

HDU 4602 Partition(快速幂)

C - Partition Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4602 Description Define f(n) as the number of ways to perform n

SHUI 366
上一篇: HDU 4608 I-number (数学&字符串处理)
下一篇: hash函数解析
synapse7
博客等级 码龄14年 432粉丝 701原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值