Orz

送分比较慷慨的一道题,疯狂特判能拿不少分。

对于$a>0,b>0$的情况:

用exgcd求出方程通解,然后通过操作得到最小正整数解和最大正整数解

他们以及他们之间的解满足等差数列性质,小学数奥求项数即可

(其实就是(末项-首项)/公差+1)

其他情况特判掉或者转化为可处理情况即可(比如全负),不多说,代码里写的还是比较清晰的

//#define XR
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int T,a,b,c,x,y;
//void exgcd(int a,int b,int &x) int exgcd(int a,int b,int &x,int &y,int c)
{
if(!b)
{
x=c/a;
y=;
return a;
}
int g=exgcd(b,a%b,y,x,c);
y-=a/b*x;
return g;
}
void work()
{
scanf("%d%d%d",&a,&b,&c);x=y=;
if(a==&&b==)
{
if(c==)
{
puts("ZenMeZheMeDuo");
return ;
}
else
{
puts("");
return ;
}
}
if(a==||b==)
{
long long now=a+b;
if(c==||(c%now==&&(long long)now*c>))
{
puts("ZenMeZheMeDuo");
return ;
}
else
{
puts("");
return ;
}
}
if((a>&&b>&&c<=)||(a<&&b<&&c>=)||(a>&&b>&&a+b>c)||(a<&&b<&&a+b<c))
{
puts("");
return ;
}
if(a==b&&a==)
{
if(c>)puts("ZenMeZheMeDuo");
else if(c<=)puts("");
else cout<<c-<<endl;
return ;
}
if(a+b==c)
{
puts("");
return ;
}
if(a<&&b<)a=-a,b=-b,c=-c;
int GCD=exgcd(a,b,x,y,c);//cout<<GCD<<endl;
if(c%GCD!=)
{
puts("");
return ;
} if((long long)a*b<)
{ puts("ZenMeZheMeDuo");
return ;
}
a/=GCD;b/=GCD;c/=GCD;x%=b;
while(x<=)x+=b;
y=(c-a*x)/b;
int ym=y%a;
while(ym<=)ym+=a;int ans;
if(ym>y)ans=;
else ans=(y-ym)/a+;
if(ans>)puts("ZenMeZheMeDuo");
else cout<<ans<<endl; }
void test()
{
scanf("%d%d",&a,&b);
exgcd(a,b,x,y,c);
cout<<x<<' '<<y<<endl;
}
int main()
{
// cout<<(18%(-5))<<endl;
//while(1)test();
#ifdef XR
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
scanf("%d",&T);
while(T--)work();
return ;
}

[7.22NOIP模拟测试7]方程的解 题解(扩展欧几里得)的更多相关文章

  1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C.Ray Tracing (模拟或扩展欧几里得)

    http://codeforces.com/contest/724/problem/C 题目大意: 在一个n*m的盒子里,从(0,0)射出一条每秒位移为(1,1)的射线,遵从反射定律,给出k个点,求射 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. Acwing-203-同余方程(扩展欧几里得)

    链接: https://www.acwing.com/problem/content/205/ 题意: 求关于x的同余方程 ax ≡ 1(mod b) 的最小正整数解. 思路: 首先:扩展欧几里得推导 ...

  9. 扩展欧几里得(exgcd)与同余详解

    exgcd入门以及同余基础 gcd,欧几里得的智慧结晶,信息竞赛的重要算法,数论的...(编不下去了 讲exgcd之前,我们先普及一下同余的性质: 若,那么 若,,且p1,p2互质, 有了这三个式子, ...

随机推荐

  1. hdu 6134 Battlestation Operational (莫比乌斯反演+埃式筛)

    Problem Description   > The Death Star, known officially as the DS-1 Orbital Battle Station, also ...

  2. OC学习篇之---对象的拷贝

    在前一篇文章中我们说到了如何解决对象的循环引用问题:http://blog.csdn.net/jiangwei0910410003/article/details/41926369,这一篇文章我们就来 ...

  3. jdbc——java连接sql server 过程

    首先要去下一个关于sql的驱动jar包,叫做sqljdbc4.jar 然后更新项目的build path,加入这个jar包 前几步有问题的看该博客 https://blog.csdn.net/qq24 ...

  4. mysql查询诊断分析工具

    Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方.通常我们是使用的explain,以及slow query log都无法做到 ...

  5. 【Tomcat】2.配置Tomcat服务器端口和HTTPS

    1.修改XML配置文件 找到Tomcat安装目录下的conf文件夹,打开server.xml文件(可以用笔记本打开) 其中有几行代码如下 <Server port="8005" ...

  6. linux下关闭Oracle及关机

    参考了如下文章 linux环境下连接oracle 并操作oracle数据库 1 先看lsnrctl和oracle service是否都启动了.如果没有启动,先启动:如net start,启动所有服务. ...

  7. 《Java技术》 第二次作业

    java第二次作业 (一)学习总结 1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法.举例说明equals方法和==的区别. 在Eclips ...

  8. 百度之星资格赛2018B题-子串查询

    子串查询 题目 度度熊的字符串课堂开始了!要以像度度熊一样的天才为目标,努力奋斗哦! 为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n]=a1a2⋯an,接下来他 ...

  9. linux性能查看调优

    一 linux服务器性能查看1.1 cpu性能查看1.查看物理cpu个数:cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l ...

  10. 25-python基础-python3-集合(set)常用操作

    sets 支持 x in set, len(set),和 for x in set.作为一个无序的集合,sets不记录元素位置或者插入点.因此,sets不支持 indexing, slicing, 或 ...