博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非常可乐
阅读量:4988 次
发布时间:2019-06-12

本文共 781 字,大约阅读时间需要 2 分钟。

题意:

给出一瓶可乐(S毫升)和两个不同容积的杯子(a,b毫升),可以相互倒可乐,要求两人喝掉相同的可乐,如果能平分则输出最少次数,否则输出“NO”。

分析:

这题表面看上去是个bfs枚举所有状态暴搜即可,但是细想发现这是个数论题,设g=gcd(a,b),则如果S/g%2!=0,说明无论怎样倒可乐都不可能平分。若有解,则必然存在(a/g)x+(b/g)y=(a+b)/2g。解不定方程即可。

#include 
#include
#include
#include
#include
#include
#include
#include
#define range(i,a,b) for(int i=a;i<=b;++i)#define LL long long#define rerange(i,a,b) for(int i=a;i>=b;--i)#define fill(arr,tmp) memset(arr,tmp,sizeof(arr))using namespace std;int n,a,b;void init(){}int gcd(int a,int b){ return b?gcd(b,a%b):a;}void solve(){ while(cin>>n>>a>>b,n,a,b){ n/=gcd(a,b); if(n&1)cout<<"NO"<
View Code

 

转载于:https://www.cnblogs.com/Rhythm-/p/9323443.html

你可能感兴趣的文章
HTTP POST GET 本质区别详解
查看>>
css+div
查看>>
使用Java API的5个技巧
查看>>
Java生鲜电商平台-系统架构与技术选型
查看>>
nginx+keepalived简单双机主从热备
查看>>
vue mint-ui 三级地址联动
查看>>
前端异常和性能监控(转)
查看>>
多线程程序的测试和调试
查看>>
Python练习_购物车_day6
查看>>
Codeforces Round #446 (Div. 2)
查看>>
android学习笔记41——图形图像处理1
查看>>
realloc函数实现数组动态增长
查看>>
设计模式之模板方法模式和策略模式
查看>>
遗弃(我看《功夫熊猫2》)
查看>>
iOS GCD基础篇 - 同步、异步,并发、并行的理解
查看>>
C++中const关键字详解
查看>>
Linux下的crontab定时执行任务命令详解
查看>>
【Java POI】POI基于事件驱动解析大数据量2007版本Excel,空值导致列错位问题
查看>>
.Net_05_事务的基本语法(Sql 语句)
查看>>
c++ 获取某个进程个数
查看>>