方程的解

[扩展欧几里德]

首先进行特判,两个小时基本想到了,除了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. solusvm 主控端迁移

    难点在于solusvm被控端已经开了小鸡的情况. 备份数据库: #!/bin/sh ## Vars CONF=/usr/local/solusvm/includes/solusvm.conf FILE ...

  2. SPSS分析技术:多元方差分析

    SPSS分析技术:多元方差分析 下面要介绍多元方差分析的内容,多元方差分析是研究多个自变量与多个因变量相互关系的一种统计理论方法,又称多变量分析.多元方差分析实质上是单因变量方差分析(包括单因素和多因 ...

  3. 黑裙辉DS918+安装错误码21,安装教程 重装需要重新制作启动盘

    不然报错误码21    

  4. Java—重写与重载的区别

    1.重写(Override) 子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除了子类中方法的返回值是父类中方法返回值的子类时)都相同的情况 ...

  5. MySQL中修改多个数据表的字段拼接问题

    错误1: 异常:Truncated incorrect DOUBLE value: 'lili' 问题分析:我的修改sql语句是:update video set vname='汉字' and vdi ...

  6. Java超简明入门学习笔记(三)

    Java编程思想第4版学习笔记(三) 第五章 初始化与清理(构造器和垃圾回收机制)         Java有和C++类似的构造函数来为新创建的对象执行初始化及完成一些特殊的操作,有的类数据成员可能会 ...

  7. Java 多线程同步和异步详解

    java线程 同步与异步 线程池 1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理.显然这是由于全局资源造成 ...

  8. CODE[VS]1372:DNA

    Description 为了进一步分析外星生物,专家们决定对 DNA 进行切割.限制性核酸内切酶是基因工程中的重要的工具酶.它会识别一段碱基序列(说白了就是只包含 ATGC 的序列)并且切割开.Eco ...

  9. Django项目:CRM(客户关系管理系统)--82--72PerfectCRM实现CRM动态菜单和角色

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  10. 我认为最节省时间的CSS命名规范

    CSS命名规范一 js中对变量的命名最好使用camel case驼峰式命名法,但CSS中更适用于red-box命名规范. CSS命名规范二 BEM命名规范 B=>block E=>elem ...