很不错的题,加深了我对exgcd的理解

(以前我认为做题就是搜索、dp...原来数学也很重要)

理解了几个小时,终于明白了。但我什么都不打算写。

看代码吧:

#include<iostream>
using namespace std; int exgcd(int a,int b,int& x,int&y){//扩展欧几里得
if(b==){
x=; y=;
return a;
}
int x2,y2;
int d=exgcd(b,a%b,x2,y2);
x=y2; y=x2-(a/b)*y2;
return d;
} int main(){
int T; cin>>T;
while(T--){
int a,b,c,lx,hx,ly,hy;
cin>>a>>b>>c>>lx>>hx>>ly>>hy;
c=-c;
if(lx>hx||ly>hy||(a==&&b==&&c!=)){cout<<<<endl; continue;}
if(a==||b==){
long long num_x,num_y;
if(a==)num_x=hx-lx+;
else if(c%a==&&(c/a)<=hx&&(c/a)>=lx)num_x=;
else num_x=;
if(b==)num_y=hy-ly+;
else if(c%b==&&(c/b)<=hy&&(c/b)>=ly)num_y=;
else num_y=;
cout<<num_x*num_y<<endl;
continue;
}
int x,y;
int d=exgcd(a,b,x,y);
if(c%d!=){cout<<<<endl; continue;}
int k=c/d;
x*=k; y*=k;
a/=d; b/=d;
// cout<<x<<' '<<y<<endl;
if(x<lx){
while(x<lx){
x+=b;
y-=a;
}
}
else{
while(x>=lx){
x-=b;
y+=a;
}
x+=b; y-=a;
} long long ans=;
while(x<=hx){
if(y<=hy&&y>=ly){
ans++;
// cout<<x<<' '<<y<<endl;
}
x+=b;
y-=a;
}
cout<<ans<<endl;
}
}

code1213 解的个数 扩展欧几里得的更多相关文章

  1. 扩展欧几里得 求ax+by == n的非负整数解个数

    求解形如ax+by == n (a,b已知)的方程的非负整数解个数时,需要用到扩展欧几里得定理,先求出最小的x的值,然后通过处理剩下的区间长度即可得到答案. 放出模板: ll gcd(ll a, ll ...

  2. exgcd扩展欧几里得求解的个数

    知识储备 扩展欧几里得定理 欧几里得定理 (未掌握的话请移步[扩展欧几里得]) 正题 设存在ax+by=gcd(a,b),求x,y.我们已经知道了用扩欧求解的方法是递归,终止条件是x==1,y==0: ...

  3. poj 2891 扩展欧几里得迭代解同余方程组

    Reference: http://www.cnblogs.com/ka200812/archive/2011/09/02/2164404.html 之前说过中国剩余定理传统解法的条件是m[i]两两互 ...

  4. poj 2142 扩展欧几里得解ax+by=c

    原题实际上就是求方程a*x+b*y=d的一个特解,要求这个特解满足|x|+|y|最小 套模式+一点YY就行了 总结一下这类问题的解法: 对于方程ax+by=c 设tm=gcd(a,b) 先用扩展欧几里 ...

  5. poj 1061 扩展欧几里得解同余方程(求最小非负整数解)

    题目可以转化成求关于t的同余方程的最小非负数解: x+m*t≡y+n*t (mod L) 该方程又可以转化成: k*L+(n-m)*t=x-y 利用扩展欧几里得可以解决这个问题: eg:对于方程ax+ ...

  6. Poj 1061 青蛙的约会(扩展欧几里得解线性同余式)

    一.Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要 ...

  7. 【64测试20161112】【Catalan数】【数论】【扩展欧几里得】【逆】

    Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到C ...

  8. URAL1204. Idempotents(扩展欧几里得)

    1204 大体推推 会出来这个式子 x(x-1) = k*n;n = p*q ;x(x-1)%(p*q)==0; 因为p,q都为素数 那也就是说x和x-1中必定包含这两个数 而且一个里面只能有一个 不 ...

  9. [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)

    Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...

随机推荐

  1. Elasticsearch 全文搜索和keyword search字段的mapping定义

    在ES5.0之前我们对于需要keyword search的字段都是这样定义的: { "field name":{ "type": "string&qu ...

  2. Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0

    Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0 环境 本教程使用 CentOS 6.4 32位 作为系统环境,请自行安装系统.如果用的是 Ubuntu 系统,请查 ...

  3. 制作keil5的pack

    [原创出品§转载请注明出处] 出处:http://www.cnblogs.com/libra13179/p/6273415.html 我在这里就交大家怎样制作自己的Pack,(这里是我制作好的http ...

  4. 使用示例带你提前了解 Java 9 中的新特性

    使用示例带你提前了解 Java 9 中的新特性 转载来源:https://juejin.im/post/58c5e402128fe100603cc194 英文出处:https://www.journa ...

  5. Spring boot Thymeleaf 配置

    第一步:pom.xml加入依赖 <!-- HTML templates--> <dependency> <groupId>org.springframework.b ...

  6. 移动cup

    intel处理器M和U H结尾的有什么具体区别 笔记本CPU 酷睿i 系列U M H详解: U 低压版(低电压-性能消减)最低主频:1.7-1.9GHZ M 准电压(笔记本上的电压标准)最低主频:2. ...

  7. PageUtil 分页

    /** * 分页工具类 * @author Administrator * */ public class PageUtil { /** * 生成分页代码 * @param targetUrl 目标地 ...

  8. How to Pronounce the Word SOMETHING

    How to Pronounce the Word SOMETHING Share Tweet Share Something tells me you’re going to like this v ...

  9. Delphi 创建一个url网址快捷方式代码

    procedure CreateURLShortcut(const ShortcutFile, URL: string); var F: TextFile; // text file begin {$ ...

  10. Ansible Playbook Variables

    虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...