[codevs1213]解的个数 二分 + exgcd

题目←

扩欧,求不定方程解的个数
我们已经知道通解x0 = x +- (b/gcd(a,b))t,那只要知道有多少个t使x在题目给定的范围中就行了
但还有y
怎么办?求交集!
分别二分确定在x取值范围内合法的t的范围和在y取值范围内合法的t的范围
然后交一下
值得一提的是,对于同一个t,由exgcd求出的x,y而找到的一组通解为
x + (b/gcd(a,b))
t,y - (a/gcd(a,b)) * t

x - (b/gcd(a,b)) * t,y + (a/gcd(a,b)) * t

当a,b同号时,应注意t是互为相反数的
对此把某一组解的范围 *= -1就好了

还有一种解法是划定范围+枚举,时间上不如二分但代码更简洁

注意特判最后几组a,b == 0的数据……

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL A,B,C,P,Q,R,S;
int n;
LL a,b,c,m,x,y,G;
LL Gcd(LL a,LL b){return b ? Gcd(b,a%b) : a;
}
void exgcd(LL a,LL b){if(!b){x = 1;y = 0;return;}exgcd(b,a%b);LL tmp = y;y = x - (a/b)*y;x = tmp;
}
LL lim1,lim2,lim3,lim4,liml,limr,T;
int main(){cin >> T;while(T --){scanf("%lld%lld%lld%lld%lld%lld%lld",&A,&B,&C,&P,&Q,&R,&S);if(!A && !B){if(C == 0){liml = max(P,R);limr = min(Q,S);if(limr < liml)printf("0\n");else printf("%lld\n",(Q - P + 1)*(S - R + 1));}else printf("0\n");continue;}G = Gcd(A,B);C *= -1;if(C%G){printf("0\n");continue;}a = A/G;b = B/G;c = C/G;exgcd(a,b);x *= c;y *= c;if(b < 0)b *= -1;if(a < 0)a *= -1;LL l = -100000000LL,r = 100000000LL;while(r - l > 1){LL mid = r + l >> 1;if(x + b*mid < P)l = mid;else r = mid;}lim1 = r;l = -100000000LL;r = 100000000LL;while(r - l > 1){LL mid = r + l >> 1;if(x + b*mid <= Q)l = mid;else r = mid;}lim2 = l;l = -100000000LL;r = 100000000LL;while(r - l > 1){LL mid = r + l >> 1;if(y + a*mid < R)l = mid;else r = mid;}lim3 = r;l = -100000000LL;r = 100000000LL;while(r - l > 1){LL mid = r + l >> 1;if(y + a*mid <= S)l = mid;else r = mid;}lim4 = l;if((A > 0) == (B > 0)){lim3 *= -1;lim4 *= -1;swap(lim3,lim4);}liml = max(lim1,lim3);limr = min(lim2,lim4);printf("%lld\n",max(0LL,limr - liml + 1));//cout << a << b << endl;}
}

转载于:https://www.cnblogs.com/loi-pingxing/p/7774161.html

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

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

相关文章

爬取饿了么商铺信息

分析&#xff1a; 当我们访问https://www.ele.me/home/时&#xff0c;看看我们得到了什么 1.png我们发现所有的城市名称和他的经纬度&#xff0c;还有一个风流的男子 然后随机输入一些东西看看&#xff0c;进入某个地区看一看 在新的界面里我们看到了这样一条url: https://main…

html中的锚点

一、页面内跳转的锚点设置 页面内的跳转需要两步&#xff1a; 方法一&#xff1a; ①&#xff1a;设置一个锚点链接<a href"#miao">去找喵星人</a>&#xff1b;&#xff08;注意&#xff1a;href属性的属性值最前面要加#&#xff09; ②&#xff1a;在页…

linux基本命令du,Linux常用操作命令汇总

你还在为不知道Linux常用操作命令汇总而不知所措么?下面来是学习啦小编为大家收集的Linux常用操作命令汇总&#xff0c;欢迎大家阅读&#xff1a;Linux常用操作命令汇总1.ls 命令ls以默认方式显示当前目录文件列表服务器教程ls -a显示所有文件包括隐藏文件ls -l显示文件属性&a…

Maven部署到Nexus

1.概述 在上一篇文章中 &#xff0c;我讨论了Maven项目如何在本地安装尚未部署在Maven Central&#xff08;或任何其他大型且公共托管的存储库&#xff09;上的第三方jar。 该解决方案仅适用于小型项目&#xff0c;在这些项目中安装&#xff0c;运行和维护完整的Nexus服务器可能…

后处理效果栈

Unity官方的Github实现&#xff1a;Post Processing Stack Post-processing is the process of applying full-screen filters and effects to a camera’s image buffer before it is displayed to screen. It can drastically improve the visuals of your product with litt…

【Java IO流】浅谈io,bio,nio,aio

本文转载自&#xff1a;http://www.cnblogs.com/doit8791/p/4951591.html1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候&#xff0c;根据IO操作的就绪状态来采取的不同方式&#xff0c;说白了是一种读…

linux 安装tcl命令,TCL/TK Linux下安装 | 勤奋的小青蛙

原创文章&#xff0c;转载请注明&#xff1a; 转载自勤奋的小青蛙本文链接地址: TCL/TK Linux下安装在Linux下安装TCL/TK&#xff0c;可以有编译源代码的方式安装&#xff0c;也可以有直接通过二进制压缩包进行解压缩安装&#xff0c;本文采用比较快捷的方式&#xff0c;用二进…

安全性中的Spring AOP –通过方面控制UI组件的创建

以下文章将显示在我参与的一个项目中&#xff0c;我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是为了使用户能够看到一些UI组件&#xff0c;他需要具有一定级别的安全特权。 如果不满足该要求&#xff0c;则不会显示UIComponent。 让我们看一下项目结构&…

模拟生物自然进化的基因遗传算法

基因遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;是一种通过模拟生物进化过程来寻找最优解的优化算法。它是一种常见的启发式搜索算法&#xff0c;常用于优化、搜索和机器学习等领域。 生物基因遗传 生物的基因遗传是指父母通过基因传递给子代的过程。基因…

折半查找算法及分析(手工过程)

折半查找的手工过程&#xff1a; 1.我需要查找的数是10&#xff1b; 给定&#xff1a;1 5 8 10 13 14 17 22 25 27 29 31 35 37 40 42 45 47 50 51 58 下标&#xff1a;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1…

Bootstrap下拉菜单

前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项&#xff0c;Bootstrap默认提供了用于显示链接列表的可切换、有上下文的菜单。而且在各种交互状态下的菜单展示需要和javascript插件配合才能使用。本文将详细介绍Bootstrap下拉菜单 使用方法 在使用Bootstrap框…

linux进程socket通信,linux进程间通信--socket套接字 实例代码

可以实现通信的代码实现&#xff0c;拿去用&#xff01;原文来自&#xff1a;http://blog.chinaunix.net/uid-26790551-id-3171897.html服务器端&#xff1a;#include #include #include #include #include #include #define UNIX_DOMAIN "/tmp/UNIX.domain"int main…

Maven发布到Nexus

1.概述 在本系列的上一篇文章中&#xff0c;我们将Maven设置为Nexus的部署过程 。 在本文中&#xff0c;我们将在项目的pom以及Jenkins作业中使用Maven配置发布过程 。 2. 为了使Maven能够发布到Nexus Repository Server&#xff0c;我们需要通过distributionManagement元素定…

mysql随机查询

select * from table as t1 join (select round(rand() * ((select max(id) from table)-(select min(id) from table))(select min(id) from table)) as id) as t2 where t1.id > t2.id order by t1.id limit 1;;转载于:https://www.cnblogs.com/upup2015/p/7782525.htm…

CSS学习笔记11 CSS背景

background-color&#xff1a;背景色 前面我们经常用background-color这个属性来设置元素的背景色&#xff0c;例如下面这条css可将段落的背景色设置为灰色 p {background-color: gray;} 如果想要元素的背景色向外延伸&#xff0c;则只需增加内边距即可 background-color可以为…

linux 文件的目录,Linux文件及目录管理

第七列&#xff1a;文件或目录名。名以 . 开头表示为隐藏文件或隐藏目录2.2 修改文件目录或者权限改变文件所属用户组&#xff1a;chgrpchgrp [-R] 用户组 文件或目录 ...[-R]&#xff1a;递归修改该目录下所有文件和目录&#xff1b;改变文件所有者&#xff1a;chownchown [-R…

Hbuilder MUI 下拉选择与时间选择器

一、 Hbuilder 下拉选择 <link rel"stylesheet" href"../../../assets/mui/css/mui.picker.min.css" /><script type"text/javascript" src"../../../assets/mui/js/mui.picker.min.js"></script> //引用mui.picker…

套接字(linux相关)

前言&#xff1a;略 一、前因 一切从tcp、udp开始。 众所周知&#xff0c;网络模型一般有两种模型&#xff0c;一种为OSI概念模型&#xff08;七层&#xff09;&#xff0c;另一种为TCP/IP网络模型&#xff08;四层&#xff09;。 TCP/IP应用层对应OSI的应用层、显示层、会话层…

Maven的春天

1.概述 本教程将讨论如何使用Maven设置Spring&#xff0c;并介绍使用Spring依赖项的特定用例。 最新的Spring版本可以在Maven Central上找到。 2.基本的Maven Spring依赖关系 Spring被设计为模块化和灵活的-基本的Spring容器可用于各种场景&#xff0c;而无需包含框架必须提供…

linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

1.说出 10 个 linux 常用的指令1) ls 查看目录中的文件2)cd /home 进入 / home 目录&#xff1b;cd .. 返回上一级目录&#xff1b;cd ../.. 返回上两级目录3)mkdir dir1 创建一个叫做 dir1 的目录4)rmdir dir1 删除一个叫做 dir1 的目录 (只能删除空目录)5)rm -f file1 删除一…