poj-1980 Unit Fraction Partition **

/*
* 本以为这题剪枝会很难,没想到1A了。。32ms
* 这个题的难点是分数的处理。。不要用double。。精度难以把握。。
*
*/

#include
<cstdio>
#include
<cmath>
using namespace std;

int p, q, a, n, tot; //如题目定义,tot为答案

//p1/q1 和 p2/q2 比较大小
int inline frac_cmp(int p1, int q1, int p2, int q2){
return p1 * q2 - p2 * q1;
}
/*
int inline gcd(int a, int b){
if(b == 0) return a;
return gcd(b, a % b);
}
*/
// p/q - 1/d 答案保存在 p/q中
void inline frac_sub(int &p, int &q, int d){
p
= p * d - q;
q
= q * d;

//可以不约分,节省时间(600ms -> 63ms)
// if(p != 0){
// int g = gcd(p, q);
// p = p / g; q = q / g;
// }
}

//last_d上一层的分母。。left_p剩下的分数的分子。。left_q剩下的分数的分母。。num层数。。left_a剩下的分母的最大乘积
void dfs(int last_d, int left_p, int left_q, int num, int left_a){
int next_p, next_q;
if(num == n+1 && left_p != 0) return;
if(num <= n+1 && left_p == 0){
tot
++; return;
}

// if(frac_cmp(left_p, left_q, n-num+1, last_d) > 0) return; //剩下的分数太大(后面会判断,可略)

for(int d=last_d; d<=left_a; d++){
if(frac_cmp(left_p, left_q, 1, d) < 0) continue; // 1/d太大

frac_sub(next_p
= left_p, next_q = left_q, d); //求得next_p, next_q
if(frac_cmp(next_p, next_q, n-num, d) > 0) break; //剩给下一层的分数太大

dfs(d, next_p, next_q, num
+1, left_a / d);
}

}


int main(){
while(scanf("%d %d %d %d", &p, &q, &a, &n)){
if(p==0) return 0;

tot
= 0;
dfs(
1, p, q, 1, a);
printf(
"%d\n", tot);

}

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java对象实例_深入理解Java对象实例生成的例子!(转)

深入理解Java对象实例生成的例子!(转)[more]代码如下:class A {public int Avar;public A() {System.out.println("AAA");doSomething();}public void doSomething() {Avar 1111;System.out.println("A.doSomething()");}}public class B extends A {publ…

程序员江湖鄙视链大全,看看你处于链条的哪一级?

有人的地方就有江湖。程序员&#xff0c;是一个知识、智商、都异于常人的 群体&#xff0c;有人总结了程序员江湖等级鄙视链的方法和流程。老婆漂亮的程序员鄙视老婆不漂亮的程序员鄙视有女友的程序员鄙视单身狗程序员而在单身狗之间&#xff0c;才有了语言&#xff0c;编辑器和…

java什么是静态_什么是java静态

什么是java静态java静态包括静态变量、静态方法、静态初始化块&#xff0c;以下是静态的详解。(推荐教程&#xff1a;java教程)1. 什么是静态变量大家都知道&#xff0c;我们可以基于一个类创建多个该类的对象&#xff0c;每个对象都拥有自己的成员&#xff0c;互相独立。然而在…

如何在 .NET 程序万种死法中有效的生成 Dump (上)

一&#xff1a;背景相信很多人都知道通过 任务管理器 抓取dump&#xff0c;虽然简单粗暴&#xff0c;但无法满足程序的无数种死法&#xff0c;比如&#xff1a;内存膨胀&#xff0c;程序爆炸CPU爆高&#xff0c;程序累死应用无响应&#xff0c;用户气死意外退出&#xff0c;和人…

Google上面关于cas的文章

http://code.google.com/p/j2eewiki/wiki/CASinstallServer转载于:https://blog.51cto.com/flash51/614827

74款app源码,值得你拥有的干货

最近&#xff0c;小编一直在整理一些app的源码&#xff0c;如&#xff1a;BiliClient&#xff08;仿bilibili客户端&#xff09;、WeChat高仿微信、知乎专栏App、Compass&#xff08;MIUI指南针的社区开源版&#xff09;等。现在小编打算将这些资料免费分享给大家&#xff01;&…

监控系统简介:使用 Prometheus 与 Grafana

注&#xff1a;本文虽以 Docker 进行演示&#xff0c;但 Docker 并不是必须的&#xff0c;相关软件也可以直接安装到计算机上背景如果我们是Web应用的开发者&#xff0c;会对响应时间、接口的稳定性等比较敏感&#xff0c;在站点尚未部署到生产环境时&#xff0c;我们有充足的时…

7500 cpuz跑分 i5_核心硬盘 i5 7500性能测试_DIY攒机酷品测试-中关村在线

下面我们进入CPU测试环节。为保测试性准确可靠&#xff0c;以下测试均采用Windows 10 1周年版 64位正版系统&#xff0c;且不对操作系统进行任何优化&#xff0c;用以获取最大的系统稳定性与兼容性。Intel 酷睿i5 7500i5 7500 CPU-ZFritz Chess BenchmarkFritz Chess Benchmark…

Android Ap 开发 设计模式第七篇:生成器模式

Builder Pattern 模式解读 生活在深圳这所高速发展的城市&#xff0c;高楼大厦林立。所谓万丈高楼平地起&#xff0c;在我们感慨楼层的高耸之外&#xff0c;更要配服楼层的建造者和设计者。大楼首先得打稳地基、搭建骨架&#xff0c;再由下往上一层层盖上去。而这样的架构从程序…

MySQL 创始人:写代码比打游戏还爽,程序员应该多泡开源社区

编者按&#xff1a;根据StackOverflow的最新调查&#xff0c;MySQL仍然是全世界最流行的数据库&#xff0c;受访的开发者中有44.3%的人在使用&#xff0c;超过了第二位的SQL Server 10多个百分点。可是你知道MySQL是怎么诞生的吗&#xff1f;openocean 的一篇有关MySQL开发者Mi…

tomcat如何修改java版本_Java程序员必备——Tomcat配置技巧Top10

一、配置系统管理(Admin Web Application)大多数商业化的J2EE服务器都提供一个功能强大的管理界面&#xff0c;且大都采用易于理解的Web应用界面。Tomcat按照自己的方式&#xff0c;同样提供一个成熟的管理工具&#xff0c;并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin …

祝福!微软 46 周年生日快乐!

46 年前的今天&#xff0c;即 1975 年 4 月 4 日&#xff0c;比尔盖茨&#xff08;Bill Gates&#xff09;和保罗艾伦&#xff08;Paul Allen&#xff09;共同创立了微软公司。他们是小时候认识的朋友及高中同学&#xff0c;并对电脑编程充满激情。1975 年 1 月&#xff0c;MIT…

如何将Emacs添加到右键菜单并显示为“烤肉”

1 运行regedit 2 在HKEY_CLASSES_ROOT\*\ 下新建一个"shell"项 3 在shell项新建一个"Emacs"项&#xff0c;并将其默认值修改为"烤肉" 4 在Emacs项下再新建一个"command"项&#xff0c;并将其值修改为 E:\emacs-23.3\bin\runemacs.exe …

荐书 | 没有数学思维的程序员不是好的问题解决者

今天小木给大家推荐以下五本关于数学历史或数学思维的名家著作。读者推荐&#xff1a;01《这才是最好的数学书》[日] 笹部贞市郎55.00赠&#xff1a;《谁谋杀了希尔伯特教授》数学漫画随机一本《神笔涂绘》内容简介&#xff1a;有人曾请教笹部贞士郎&#xff0c;是如何引领近代…

java反射sethaha_Java反射深度测试

通过反射API构造对象&#xff0c;并使用反射调用方式访问对象的public/private方法和字段。package lavasoft.test;/*** 测试的业务类** author leizhimin 2010-5-6 20:16:10*/public class MyService {private String msg;public MyService() {System.out.println("log: …

监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标

回顾在《监控系统简介&#xff1a;使用 Prometheus 与 Grafana》一文中&#xff0c;我们了解了什么是监控系统&#xff0c;Prometheus 这一监控工具及它提供的数据类型、PromQL 以及 Grafana 可视化工具的基本用法。今天这一篇我们将在 ASP.NET Web API 项目中进行实战&#xf…

剧透人生!你什么时候结婚换工作甚至狗带,Facebook都知道

来源&#xff1a;大数据文摘即将换工作&#xff1f;要结婚了&#xff1f;有亲人朋友要去世了&#xff1f;你关心的这些人生重大节点&#xff0c;有人希望比你提前知道它们何时发生&#xff0c;并基于此对你精准投放广告。惊悚&#xff1f;这是Facebook在2010年以来提交的一系列…

如何在 NET 程序万种死法中有效的生成 Dump (下)

一&#xff1a;背景 上一篇我们聊到了如何通过 procdump 抓取 cpu爆高 和 内存暴涨 两种情况&#xff0c;这一篇再聊聊如何去抓程序 挂死 和 意外退出。二&#xff1a;程序挂死 1. 定义程序挂死 简单的说就是程序没有响应&#xff0c;既然没响应了&#xff0c;可能 死锁, 可能 …

C++程序运行时内存布局之--无继承情况下的虚函数

2019独角兽企业重金招聘Python工程师标准>>> 虚函数是C实现多态的关键&#xff0c;没有虚函数&#xff0c;C只能是OB&#xff0c;不能完成OO。 本文介绍的是没有继承情况下&#xff0c;带有虚函数的类在内存中布局&#xff0c;以及其实例&#xff08;对象&#xff0…

纠结学哪种编程语言?请看这个回答

各位童鞋&#xff0c;如果最近/未来几年有人还纠结学习哪种编程语言&#xff0c;那你可以请他/她参考一下这个 Quora 帖子的最高赞回答&#xff1a;> 能找一份工作&#xff1a;Java> 能找一份高薪工作&#xff1a;C> 啥样工作都能找到&#xff1a;Python> 总能找到…