[7.22NOIP模拟测试7]方程的解 题解(扩展欧几里得)
2024-08-30 22:13:42
送分比较慷慨的一道题,疯狂特判能拿不少分。
对于$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 ;
}
最新文章
- Linux0.11内核--系统调用机制分析
- Active MQ 传输 ObjectMessage 异常
- [转]Linux软连接和硬链接
- [php入门] 3、WAMP中的集成MySQL相关基础操作
- jQuery.ajax() 函数详解
- 山东ACM省赛历届入口
- 【Map】获取字符串中,每一个字母出现的次数
- HDU 4341 分组背包
- Linux下多线程编程
- Javascript日期处理类库Moment.js
- mvc图片地址
- RabbitMQ核心概念篇
- Java Integer类型比较
- nodejs接收get参数和post参数
- 【AO笔记】有关TIN数据集的常用介绍
- Linux运维必会的MySQL企业面试题大全
- python 获取本机的IP
- cocos2d-x播放视频的处理
- java微信小程序解密AES/CBC/PKCS7Padding
- 也来说说C#异步委托 (转自 Rising_Sun)
热门文章
- Android中可以做的两件坏事---破解锁屏密码和获取Wifi密码
- TDengine陶建辉 自带聚光灯&;BGM的半百少年
- 框架-.NET:ASP.NET MVC
- Nginx网络架构实战学习笔记(五):大访问量优化整体思路、ab压力测试及nginx性能统计模块、nginx单机1w并发优化
- LightOJ 1248 Dice (III) (期望DP / 几何分布)
- Catch and Buffer
- js中继承的实现,原型链的知识点归纳,借用构造函数,组合继承(伪经典继承)
- c数据结构的字符串查找的Brute-Force算法
- 标准模板库(STL)学习探究之Multimap容器
- python 根据余弦定理计算两边的夹角