方程的解

[扩展欧几里德]

首先进行特判,两个小时基本想到了,除了a!=0,b==0,a*c<0这种情况

其次就是一般情况:

首先exgcd求出ax+by=GCD(a,b)的一组任意解

然后两边同乘(c/GCD)使x,y成为原方程的一组任意解,

剩下讲解见代码

 #include<iostream>
#include<cstdio>
#include<cmath>
#define int long long
using namespace std;
const int mx=;
int read()
{
int f=,x=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch<=''&&ch>=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f*x;
}
int exgcd(int a,int b,int &x,int &y)
{
if(!b){x=,y=;return a;}
int d=exgcd(b,a%b,x,y);
int tmp=x;x=y;y=tmp-(a/b)*y;
return d;
}
int a,b,c;
int ans;
void work()
{
//特判出现0的情况
if(a==&&b==&&c==){ans=mx+;return;}
if(a==&&b==&&c!=){ans=;return;}
if(a==||b==)
{
if(c==) {ans=;return;}
if(a==) swap(a,b);
if(a*c<){ans=;return;}
a=abs(a),c=abs(c);
if(c%a==){ans=mx+;return;}
else {ans=;return;}
}
//特判ab与c异号
if(a>&&b>&&c<=){ans=;return;}
if(a<&&b<&&c>=){ans=;return;}
//特判a,b异号
int x,y;
int d=exgcd(a,b,x,y);
if(c%d){ans=;return;}
if(a*b<){ans=mx+;return;}//注意这两行代码顺序,反例3 -3 5:应先进行上一步判定c%d!=0
//abc同号时,可以先处理a==b==1和a+b==c两种特殊情况,拿到部分分
if(a<) a=-a,b=-b,c=-c,d=-d;
/* if(a==1&&b==1)
{
if(c>=2) ans=c-1;
else ans=0;
return;
}
if(a+b==c) {ans=1;return;}*/
//再处理一般情况
ans=;
x*=(c/d),y*=(c/d);//x,y成为原方程的一组特解
a/=d,b/=d,c/=d;//系数约分后使GCD(a,b)==1
x=(x%b+b)%b;//使得x成为符合条件的最小正整数,,通过+b避免负数
if(x==) x+=b;//注意x为0的特殊情况
int ymax=(c-a*x)/b;//x最小时求出y的最大值
y=(y%a+a)%a;
if(y==) y+=a;//同理求y的最小值
ans=(ymax-y)/a+;//对于ymin->ymax之间的y,对应的x可能不是整数,所以/a成为x是整数的个数,因为包括两端,所以+1
return;
}
signed main()
{
int T=read();
while(T--)
{
a=read(),b=read(),c=read();
work();
if(ans>mx) puts("ZenMeZheMeDuo");
else printf("%lld\n",ans);
}
}

模拟7题解 T1方程的解的更多相关文章

  1. 模拟4题解 T1礼物

    T1 题目描述 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生 日礼物. 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种 礼物的喜悦值不能重复获得). 每次, ...

  2. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  3. HGOI NOIP模拟4 题解

    NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...

  4. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  5. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  6. vijosP1371 方程的解

    vijosP1371 方程的解 链接:https://vijos.org/p/1371 [思路] 组合公式+快速幂+高精单精. 求x^x %1000:因为x最大为2^31-1所以用快速幂在O(logx ...

  7. 方程的解_NOI导刊2010提高

    方程的解 给定x,求\(a_1+a_2+...+a_k=x^x\ mod\ 1000\)的正整数解解的组数,对于100%的数据,k≤100,x≤2^31-1. 解 显然x是可以快速幂得到答案的,而该问 ...

  8. P1771 方程的解_NOI导刊2010提高(01)

    P1771 方程的解_NOI导刊2010提高(01) 按题意用快速幂把$g(x)$求出来 发现这不就是个组合数入门题吗! $k$个人分$g(x)$个苹果,每人最少分$1$个,有几种方法? 根据插板法, ...

  9. 【Java例题】4.4使用牛顿迭代法求方程的解

    4. 使用牛顿迭代法求方程的解:x^3-2x-5=0区间为[2,3]这里的"^"表示乘方. package chapter4; public class demo4 { publi ...

随机推荐

  1. PAT甲级——A1106 Lowest Price in Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  2. 使用flags定义命令行参数

    TensorFlow定义了tf.app.flags,用于支持接受命令行传递参数,其中tf.app.flags.DEFINE_xxx()是添加命令行的optional argument(可选参数),而t ...

  3. 关于slf4j和log4j冲突问题(自己项目配置文件不生效)

    用-Dlog4j.debug可以打印出配置log4j的配置文件加载的信息 mvn dependency:tree 看依赖信息 然后排除掉重复得依赖 <dependencies> <d ...

  4. Reflections框架,类扫描工具

    Reflections是一个能提供一站式服务的对象. 巧用Reflections库实现包扫描(扫描某个包中某个接口实现.注解等) 它扫描工程的classpath,为元数据建索引,允许你运行时查询元数据 ...

  5. 实现一个koa-logger中间件

    //koa-logger.js module.exports = async(ctx,next)=>{ const start = new Date().getTime() // 中间件异步处理 ...

  6. Leetcode 345 Reverse Vowels in a String

    两个for 第一个for将每一个元音依次存放进一个char数组 第二个for,每检测到元音,就从char数尾部开始,依次赋值 如何检测元音呢?当然写一个冗长的if(),不过我们有更好的选择 hashs ...

  7. LUOGU P4195 Spoj3105 Mod

    题面 bsgs问题.因为p可能不为质数,所以我们将原先解题的式子变形 每次除以p与a的最大公约数,直到最大公约数为1或b不能整除为止 代码 #include<iostream> #incl ...

  8. 2019Python学习路线图

  9. 前端面试题之一HTML

    一.doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1)<!doctype>声明位于文档中的最前面的第一行,其作用告知浏览器用什么标准解析这个文档,并以浏览器支持的最高 ...

  10. Android SDK上手指南:下一步学习方向

    Android SDK上手指南:下一步学习方向 2014-02-28 11:01 核子可乐 译 51CTO 字号:T | T 到目前为止,我们已经介绍过的知识足以帮助大家从非常理想的起点开始进行And ...