【exgcd】牛客练习赛 D-青蛙兔子的约会

news2024/11/16 20:57:26

D-青蛙兔子的约会_牛客练习赛111 (nowcoder.com)

题意:

思路:

感觉和那个青蛙的约会比较像

就是列了个方程:

a*x+b*y=n

考虑用exgcd解方程

然后看x在[L,R]有没有解

做法就是先把x的最小整数解求出来,然后考虑它的通解

x=x0+b/d*t

暴力枚举t肯定不行,因为看数据范围是1e9,因此考虑O(1)算

一种做法是根据相对位置,将L和R都减去x,然后去看L和R之间有没有k*p

这个比较细节 

比较这两处的l和r即可

如果l<=r就是有解,否则就是无解

Code:

#include <bits/stdc++.h>

#define int long long 

using namespace std;

const int mxn=2e6+10; 
const int mod=1e9+7;

int a,b,n,L,R,x,y;

int exgcd(int a,int b,int &x,int &y){
	if(!b){
		x=1,y=0;
		return a;
	}
	int d=exgcd(b,a%b,y,x);
	y-=(a/b)*x;
	return d;
}
int ceil(int x,int y){
	return (x+y-1)/y;
}
void solve(){
	cin>>a>>b>>n>>L>>R;
	int d=exgcd(a,b,x,y);
	if(n%d!=0){
		cout<<"NO"<<'\n';
		return;
	}
	int p=b/d;
	x=(x*n/d)%p;
	x=(x%p+p)%p;
	int l=L-x;
	if(l<0) l=0;
	else l=(L-x+p-1)/p;
	int r=R-x;
	if(r<0) r=-1;
	else r=(R-x)/p;
	if(l<=r) cout<<"YES"<<'\n';
	else cout<<"NO"<<'\n';
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int __=1;cin>>__;
	while(__--)solve();return 0; 
} 

还有一种做法就是: 

如果把次数x设成从0开始,那么是不是看x在不在r-l之内就行

那就在求exgcd之前青蛙先走L次,这样次数就是从0开始了,这样就是判断次数在不在[0,r-l]之间

Code:

#include <bits/stdc++.h>

#define int long long 

using namespace std;

const int mxn=2e6+10; 
const int mod=1e9+7;

int a,b,n,L,R,x,y;

int exgcd(int a,int b,int &x,int &y){
	if(!b){
		x=1,y=0;
		return a;
	}
	int d=exgcd(b,a%b,y,x);
	y-=(a/b)*x;
	return d;
}
void solve(){
	cin>>a>>b>>n>>L>>R;
	n-=L*a;
	int d=exgcd(a,b,x,y);
	if(n%d!=0){
		cout<<"NO"<<'\n';
		return;
	}
	x*=n/d;
	y*=n/d;
	int t=b/d;
	int ans=(x%t+t)%t;
	if(ans<=R-L) cout<<"YES"<<'\n';
	else cout<<"NO"<<'\n';
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int __=1;cin>>__;
	while(__--)solve();return 0; 
} 

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

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

相关文章

2023年五一数学建模 B 题过程与结果

文章目录 第一问第二问数据时序分析Auto-ARIMA第二问求解解的情况A->Q:D-> AQ-V总快递数 第三问第四问遗传算法求解 第五问SARIMA 模型拟合季节性规律 第一问 见 2023 年 五一杯 B 题过程 代码&#xff08;第一问&#xff09; 第二问 第二问考虑是一个时序预测问题&a…

图像生成论文阅读:Latent Diffusion算法笔记

标题&#xff1a;High-Resolution Image Synthesis with Latent Diffusion Models 会议&#xff1a;CVPR2022 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9878449/ 官方代码&#xff1a;https://github.com/CompVis/latent-diffusion 作者单位&#xff1a;慕尼…

数字乡村建设与示范项目可行性研究报告(word可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除 5.1 “三平台”&#xff1a;建设支撑农业发展农村治理惠民服务的三大应用平 台 5.3.1 建设智慧农业综合服务平台 夯实数字农业基础&#xff0c;推进重要农产品全产业链大数据…

redis服务搭建,C++实现redis客户端,redis远程可视化工具

目录 redis简介redis服务搭建redis常用命令C实现redis客户端redis远程可视化工具:Another Redis DeskTop Manager redis简介 官方网址&#xff1a;https://redis.io/ 开源地址&#xff1a;https://github.com/redis 中文文档&#xff1a;http://www.redis.cn/documentation.ht…

造轮子系列】面试官问:你能手写Vuex吗(一)?

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 Vuex 是 Vue.js 的状态管理模式&#xff0c;它主要解决了组件之间共享状态时的问题。在本文…

网络原理之传输层

网络原理&#xff0c;进一步了解网络是如何工作的~~ 按照网络协议这几个层次来展开分为五点&#xff1a; 应用层&#xff08;重点介绍&#xff09;传输层&#xff08;重点介绍&#xff09;网络层&#xff08;跳过&#xff09;数据链路层&#xff08;跳过&#xff09;物理层&a…

JavaScript,

JS-引入方式JS-基础语法 书写语法变量数据类型&#xff0c;运算符&#xff0c;控制语句 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"…

Abstract Expressionist

古董地图画集 10大最有名的抽象艺术家 抽象表现主义是现代许多不同艺术思想和表达流派中最奇特的艺术运动之一。这场运动开始从社会变革中涌现出来&#xff0c;恰逢第二次世界大战的最后几周和几个月。 这一次&#xff0c;来自世界各地的人们开始欢迎在经历了多年有史以来最致…

【JavaWeb 用户认证】Cookie、Session、Token、JWT、Interceptor、SpringBoot、Spring Security

Token基本了解&#xff1a;【详细阐述Token的来源】公钥私钥基本了解&#xff1a;【理解公钥】 文章目录 一、Cookie 经典介绍以及使用案例二、Session 经典介绍以及拦截登录案例三、Token MySQL 的基本介绍及其基本使用四、JWT 基本介绍及其基本讲解五、SpringBoot 使用拦截器…

使用PyQt5设计一款简单的计算器

目录 一、环境配置&#xff1a; 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器&#xff0c;可以通过界面交互实现加减乘除的功能&#xff0c;希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…

LeetCode 牛客单链表OJ题目思路分享

目录 反转链表合并两个有序链表链表分割 反转链表 链接: link 题目描述&#xff1a; 题目思路&#xff1a; 方法1&#xff1a;改变链表链接的方向 方法1思路&#xff1a; 这力我们需要三个指针n1 n2 n3方便我们进行迭代 初始化n1指向NULL&#xff0c;n2指向第一个节点&…

云原生时代崛起的编程语言Go常用标准库实战

文章目录 基础标准库简述字符串-string底层结构函数长度格式化输出 模版-templatetext/templatehtml/template 正则表达式-regexp编码-encodingBase64JSONXML 时间-time网络-netURLHTTP客户端和服务端 加密IO操作读写文件环境变量命令行 数据库排序-sort测试和基准测试 基础标准…

OpenLDAP安装报错

tip:基于centos7&#xff0c;OpenLDAP使用2.4.44版本 只要有succeeded就可以。error可以忽略 配置base.ldif文件&#xff0c;下面的空行是必须的。 dn: dcts,dccom o: ts com dc: ts objectClass: top objectClass: dcObject objectclass: organizationdn: cnManager,dcts,d…

leveldb自定义env

leveldb自定义env 未完待续。。。 由于项目需求&#xff0c;需要自定义LevelDB的env&#xff0c;也就是以块接口实现env中各个文件接口&#xff0c;在网上没找到类似的代码&#xff0c;就打算自己参照util/env_posix.cc实现一个简单的demo&#xff0c;等到功能实现差不多的时候…

ADRV9002官方例程开发过程中遇到的问题

开发环境&#xff1a;Vivado2021.2 HDL版本&#xff1a;hdl_2021_r2 GitHub - analogdevicesinc/hdl at hdl_2021_r2 no-OS版本&#xff1a;no_OS-2021_R2 GitHub - analogdevicesinc/no-OS at 2021_R2 &#xff08;PS&#xff1a;也可以用Vivado2019.1开发&#xff0c…

【漏洞复现】Joomla未授权访问漏洞(CVE-2023-23752)

文章目录 前言声明一、漏洞简介二、影响版本三、环境搭建四、漏洞分析五、漏洞复现六、修复建议前言 Joomla是一套全球知名的内容管理系统(CMS),其使用PHP语言加上MySQL数据库所开发,可以在Linux、Windows、MacOSX等各种不同的平台上运行。 声明 本篇文章仅用于漏洞复现与…

华为OD机试真题-密码强度等级【2023】【JAVA】

一、题目描述 密码按如下规则进行计分&#xff0c;并根据不同的得分为密码进行安全等级划分。 1、密码长度&#xff1a; 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 2、字母&#xff1a; 0 分: 没有字母 10 分: 密码里的字母全都是小&#xff08;…

电脑硬盘磁盘不小心被格式化了?如何一键恢复操作教程

Easyrecovery是一款功能齐全的数据恢复软件&#xff0c;恢复内容包括&#xff1a;硬盘数据恢复、手机数据恢复、U盘数据恢复、Mac数据恢复、恢复删除文件及高级数据恢复等。当用户发生数据丢失问题时&#xff0c;第一时间想到的就是使用数据恢复软件来恢复已经丢失的文件。在众…

【机器学习】集成学习解读(ensemble learning)

【机器学习】集成学习解读&#xff08;ensemble learning&#xff09; 文章目录 【机器学习】集成学习解读&#xff08;ensemble learning&#xff09;1. 集成学习(ensemble learning)1.1 前言1.2 什么是集成学习 2. 如何得到若干个个体学习器2.1 集成学习之 Bagging2.2 集成学…

《Netty》从零开始学netty源码(五十三)之PoolThreadCache的功能

allocateNormal 在前面分析PoolArena的分配内存的方法中&#xff0c;每次分配都是先从本地线程缓存中分配&#xff0c;本地线程缓存PoolThreadCache的分配方法如下&#xff1a; 分配过程主要有两步&#xff1a; 从PoolThreadCache的缓存数组中获取相应大小的缓存cache将需要…