这题如果用暴力的方法的话,其实是求排列组合的值。
但是要注意的是做连乘积的时候会发生溢出,因此这里可用BigInteger 来做这些操作。
代码如下:
import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.math.*;
public class TreePlanting {
public long countArrangements(int total, int fancy) {
long ans=0;
int plain=total-fancy+1;
BigInteger l1=BigInteger.ONE;
BigInteger l2=BigInteger.ONE;
for(int i=0;i<fancy;i++){
l1=l1.multiply(new BigInteger((plain-i)+""));
}
for(int i=0;i<fancy;i++){
l2=l2.multiply(new BigInteger((fancy-i)+""));
}
ans=l1.divide(l2).longValue();
return ans;
}
}
不用BigInteger也是可能的,实际上要使乘积不溢出,只要每次求两个数的gcd,化简即可。
代码如下:
import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.math.*;
public class TreePlanting {
public long countArrangements(int total, int fancy) {
long ans=1;
int plain=total-fancy+1;
int[] factors=new int[fancy];
Vector<Integer> vec=new Vector<Integer>();
for(int i=0;i<fancy;i++){
factors[i]=fancy-i;
}
for(int i=0;i<fancy;i++){
int p=plain-i;
for(int j=0;j<fancy;j++){
if(p==1)
break;
if(factors[j]==1)
continue;
int g=gcd(p,factors[j]);
p=p/g;
factors[j]=factors[j]/g;
}
vec.add(p);
}
for(int i:vec){
ans*=i;
}
return ans;
}
public int gcd(int m,int n){
if(n==0)
return m;
else
return gcd(n,m%n);
}
}
分享到:
相关推荐
topcoder的数学类算法题目。一个整数被称为k-smooth当且仅当它的最大素因子不大于k,给定N和K,计算出1 - N中有多少个整数是k-smooth。1 , 1 <= K <= 1000.
SRM2Multi dumper for hsap
2. **SRM服务器**:运行SRM软件的物理或虚拟服务器,操作系统需为Server 2008 x64。 3. **支持SRM的数据库**:这里指能够被SRM兼容的数据库系统,例如SQL Server 2005。该数据库用于存储SRM的相关配置信息。 4. **...
SAP SRM 介绍
Driver HASP SRM emulator (x86)
根据给定的文件信息,我们将深入探讨“SRM-MDM Catalog Setup – Ready Reference”这一主题,专注于SAP NetWeaver MDM系统中的SRM-MDM目录设置过程。这份文档不仅适用于SAP SRM(Supplier Relationship Management...
2. OMRON产品命名约定:OMRON公司产品的型号在本手册中都是以大写形式出现,包括“CPM1”,“CPM1A”,“CPM2A”,“CPM2C”,“SRM1(-V2)”等。这可能是为了方便阅读时对产品型号的快速识别。此外,手册中提到的...
2. **边界长度**:`srm_boundarylen.cpp`可能是用于计算相邻区域边界的长度,这是评估区域合并代价的另一个因素。较长的边界通常意味着更高的合并成本,因为这会引入更多的不确定性。 3. **SRM主程序**:`srm.m`是...
SRM空间富模型隐写分析算法,选区高维特征,使用集成分类器进行训练
版本: 1.0.0 作者: Semen Zhydenko ... BridgeCrossingOptimized.java - SRM 146 DIV 2,1000 点问题,时间复杂度 O(n^(n^2))。 BridgeCrossingBest.java - SRM 146 DIV 2,1000 点问题,时间复杂度 O(n)。
HASP SRM加密狗简介 HASP SRM加密狗是一种软件保护解决方案,由阿拉丁公司开发。它提供了多种型号,以满足不同业务需要。下面将对HASP SRM加密狗的各种型号进行详细介绍。 首先是HASP HL基本型,这是阿拉丁公司最...
SAP SRM(供应商关系管理)是一种 SAP 产品,有助于通过基于 Web 的平台采购货物。 组织可以采购所有类型的产品,如直接和间接材料,服务,这可以与 SAP ERP 模块和其他非 SAP 后端系统集成,用于会计和计划。 SAP...
【标题】"VSAN与SRM"涉及到的是VMware虚拟化环境中的两个关键组件:Virtual SAN(VSAN)和Site Recovery Manager(SRM)。这两个工具在企业级数据中心中发挥着至关重要的作用,确保业务连续性和灾难恢复能力。 VSAN...
根据给定的文件信息,我们可以提炼出以下关于SAP SRM(Supplier Relationship Management)的知识点,这主要聚焦于SAP SRM的配置、组件、版权信息以及先修课程建议。 ### SAP SRM概述 SAP SRM是SAP提供的一款用于...
**SRM系统资源管理器详解** SRM(System Resource Manager)系统资源管理器是一个专为Linux环境设计的工具,它的主要功能是作为一个守护进程在后台持续监控非root用户的进程,以便控制系统的CPU和内存(MEM)资源...
2. 扩展、加强与重要供应商的关系:SRM 能够帮助企业与其建立合作关系,共享计划、产品设计和规范信息,并运作方式上进行改进。 3. 建立竞争优势:SRM 能够主动地帮助企业去建立、改进与供应商之间的战略同盟,不是...
【标题】"SRM 210 供应商关系管理"涉及的是SAP的企业级采购解决方案,SAP Supplier Relationship Management(SRM)系统的一个特定版本。SRM 210是这个模块的一个迭代,旨在帮助企业更有效地管理和优化其与供应商的...
多年SRM实施经验总结,对希望从事SRM实施或规划的同学们有帮助
2. **合同管理**:制定明确的合同条款,确保双方权益,同时设定性能指标和违约处理机制。 3. **供应链协同**:通过信息共享,提高供应链的透明度,实现供需同步,减少库存和响应时间。 4. **供应商绩效评估**:...
分块描述SRM系统的作用:寻源、协同和考核 涉及具体的业务用途,供前期规划作参考,可根据实际情况调整,再考虑如何实现