codeforces 1260C. Infinite Fence (数学or裴蜀定理)
2024-08-29 23:40:50
- 只需要验证小间隔在大间隔之间有没有连续的k个
- 设小间隔为a,大间隔为b,那么a在b之间出现的次数在\(\lfloor \frac{b}{a}\rfloor\)或者\(\lfloor \frac{b}{a}\rfloor+ 1\),问题转化为我们需要求a在b之间最多出现多少次和k比较即可
我的思路:
- 设lcm为lcm(a,b),\(c=\frac{lcm}{a}\),\(d=\frac{lcm}{b}\),那么a在b之间最多出现\(\lceil\frac{c-1}{d} \rceil\),理解为将(c-1)平均分成d段(最后一个a算作b的,所以是c-1个)
标程思路(裴蜀定理):
若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。
- 还是求a在b之间最多出现多少次,进一步再想,什么时候会出现最多的情况,那一定是a的起点在距离0最近的非0点上,列出式子\(ax-by=m\),m最小的时候为gcd(a,b),因此只需要验证\(gcd(a,b)+(k-1)*a\)和b的大小关系即可
#include<bits/stdc++.h>
#define ll long long
#define mk make_pair
#define ft first
#define se second
#define pii pair<int,int>
#define db double
#define ls o<<1
#define rs o<<1|1
#define lowbit(x) (x&-x)
using namespace std;
ll T, a, b, k;
ll gcd(ll a,ll b){
if(a<b)swap(a,b);
if(b==0)return a;
else return gcd(b,a%b);
}
int main(){
cin >> T;
while(T--){
cin >> a >> b >> k;
if(a > b)
swap(a, b);
ll tp;
if(b % a == 0){
tp = b / a - 1;
}else{
ll lcm = a / gcd(a, b) * b;
ll x = lcm / a, y = lcm / b;
x--;
tp = (x + y - 1) / y;
}
if(tp >= k)
cout << "REBEL" << endl;
else
cout << "OBEY" << endl;
}
return 0;
}
//标程
#include<bits/stdc++.h>
using namespace std;
typedef long long li;
li a, b, k;
inline bool read() {
if(!(cin >> a >> b >> k))
return false;
return true;
}
inline void solve() {
li g = __gcd(a, b);
a /= g;
b /= g;
if(a > b)
swap(a, b);
if((k - 1) * a + 1 < b)
cout << "REBEL";
else
cout << "OBEY";
cout << endl;
}
int main() {
#ifdef _DEBUG
freopen("input.txt", "r", stdin);
#endif
int tc; cin >> tc;
while(tc--) {
read();
solve();
}
return 0;
}
最新文章
- Java的集合框架
- linux开机启动服务和chkconfig使用方法(自定义服务路径启动)
- Android线程---UI线程和非UI线程之间通信
- winform中的时间轴控件
- angular js 指令的数据传递 及作用域数据绑定
- 发送cookie
- 分享一个jdk源码链接
- RMAN 备份
- 深度学习之卷积神经网络(CNN)详解与代码实现(一)
- 第四周java学习总结
- MacOS英文版Google浏览器添加印象笔记剪藏插件
- BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集
- 2018.12.17 bzoj1406 : [AHOI2007]密码箱(简单数论)
- 认识GMT和UTC时间-附带地理知识
- 【OC底层】AssociatedObject 关联对象
- 安装 GraphicsMagick
- android基础篇------------java基础(11)(文件解析xml and Json )
- MongoDB整理笔记のID自增长
- python中spilt()函数和os.path.spilt()函数区别
- makefile使用笔记(一)入门