【HNOI】分数分解
2024-08-27 11:37:06
题意描述
近来 IOI 专家们正在进行一项有关整数方程的研究,研究涉及到整数方程解集的统计问题,问题是这样的。
对任意的正整数 \(n\),我们有整数方程:
\[\frac{1}{x_1}+\frac{1}{x_2}+...+\frac{1}{x_n}=1
\]该整数方程的一个解集 \([x_1,x_2,...,x_n]\) 是使整数方程成立的一组正整数,例如 \([n,n,...,n]\)就是一个解集。
在统计解集时,IOI 专家把数据值相同但顺序不一样的解集认为是同一个解集。
例如:当 \(n=3\) 时,我们把 \([2,3,6]\) 和 \([3,6,2]\) 认为是同一个解集。
现在的任务是:对于一个给定的 \(m\),在最多只允许 \(1\) 个 \(x_i\) 大于 \(m\) 时,求出整数方程不同解集的个数。
其中数据保证 \(n\leq 20,m\leq 100\)。
就是弱化版的埃及分数
算法分析
直接搜索就是了,没什么太大的技巧。
两个上下界剪枝:(假设当前进行到第 \(depth\) 个)
- 如果后 \(n-depth+1\) 个分母都取最小值(上一个的分母)还 \(<1\),剪枝。
- 如果后 \(n-depth\) 个分母都取最大值(m),最后一个无穷小还 \(>1\) 剪枝。
注意精度问题和约分即可。
代码实现
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef double db;
const db eps=1e-15;
int n,m,ans=0;
int Gcd(int x,int y){
while(y^=x^=y^=x%=y);
return x;
}
void dfs(int dep,int last,int t1,int t2){
//dep 当前阶段,last 上一个分母,t1 当前的和的分子,t2 当前的和的分母。
int G=Gcd(t1,t2);
t1/=G,t2/=G;//约分不能少
if(dep==n){
if(t2-t1==1 && t2>=last) ++ans;//最后一个可以直接计算。
return;
}
db t=1-(db)t1/t2;
if(((db)(n-dep+1)/last)<t-eps) return;//剪枝 1。
if(((db)(n-dep)/m)>t+eps) return;// 剪枝 2。
for(int i=last;i<=m;i++)
dfs(dep+1,i,t1*i+t2,t2*i);
return;
}
int main(){
scanf("%d %d",&n,&m);
for(int i=2;i<=m;i++) dfs(2,i,1,i);
printf("%d\n",ans);
return 0;
}
完结撒❀。
最新文章
- jQuery简单的手风琴菜单
- sync_object not in (&#39;TBL_Territory&#39;)
- iStylePDF安全电子文档解决方案之电子合同在线订立
- HDU 1495 	非常可乐
- css把超出的部分显示为省略号的方法兼容火狐
- vs2012 快捷键修改
- java 两个日期之间的标准工作日(原创)
- javascriptDOM编程艺术_学习笔记_知识点 DOM
- pytest框架之fixture详细使用
- 深入浅出TCP/IP协议
- P3727 曼哈顿计划E
- js--延时消失的菜单--(笔记)
- 26、xcode8.0 解决没有iPhone4模拟器问题
- vi 中大小写转换功能
- TreeSet的自然排序(自定义对象 compareTo方法)
- Java基础——常用类之日期时间类
- 话说文件系统——VFS简介(二)
- Thunder——互评beta版本
- low逼三人组、nb二人组、归并、希尔排序----小结
- python ssh登录
热门文章
- Jmeter之『多变量循环』
- 通过VNC远程连接Linux实例
- DX12龙书 02 - DirectXMath 库中与向量有关的类和函数
- 1.ffmpeg、ffplay、ffprobe命令使用
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解决方案
- Makefile常用函数(转)
- 多测师讲解接口测试 _理论基础知识001_高级讲师肖sir
- Elasticsearch修改字段类型 (_reindex)
- 视频和音频的 DOM
- 你真的了解Python吗?这篇文章可以让你了解90%