c语言不定方程的二元一次,poj1061 - 同余方程,二元一次不定方程
以前不会解二元一次不定方程的时候不会做,现在会做了。
#include
#include
using namespace std;
typedef __int64 int64;
void solveType1(int64 a, int64 b, int64 & x, int64 & y, int64 & d) {
if (b == 0) {
x = 1; y = 0; d = a;
return;
}
int64 _x, _y, _d;
solveType1(b, a % b, _x, _y, _d);
x = _y;
y = _x - _y * ((a - a % b) / b);
d = _d;
}
bool solveType2(int64 a, int64 b, int64 c, int64 & x, int64 & y, int64 & d) {
int64 _x, _y, _d;
solveType1(a, b, _x, _y, _d);
// assert(a * _x + b * _y == _d);
if (c % _d != 0) return false;
int64 n = c / _d;
x = n * _x;
y = n * _y;
d = _d;
return true;
}
inline int64 getSign(int64 x) { return x < 0 ? -1 : 1; }
inline int64 iabs(int64 x) { return x < 0 ? -x : x; }
bool solveType3(int64 a, int64 b, int64 c, int64 & x, int64 & y, int64 & d) {
if (c < 0) { a = -a; b = -b; c = -c; }
int64 sa = getSign(a);
int64 sb = getSign(b);
int64 _x, _y, _d;
if (!solveType2(a * sa, b * sb, c, _x, _y, _d)) return false;
// assert(a * sa * _x + b * sb * _y == c);
x = sa * _x;
y = sb * _y;
d = _d;
return true;
}
int64 solve(int64 x, int64 y, int64 m, int64 n, int64 L) {
int64 t, k, _d;
if (!solveType3(n - m, L, x - y, t, k, _d)) return -1;
// assert((n - m) * t + L * k == x - y);
// printf("*** %I64d %I64d %I64d\n", t, k, _d);
int64 dx = iabs(L / _d);
if (t == 0) return 0;
if (t > 0) return t % dx;
if (t < 0) return (dx - ((-t) % dx)) % dx;
}
int main() {
int64 x, y, m, n, L;
scanf("%I64d %I64d %I64d %I64d %I64d", &x, &y, &m, &n, &L);
int64 ans = solve(x, y, m, n, L);
if (ans == -1) printf("Impossible\n");
else printf("%I64d\n", ans);
return 0;
}
c语言不定方程的二元一次,poj1061 - 同余方程,二元一次不定方程相关推荐
- c语言 不定方程问题程序,[原创]钱币问题解答(二元一次不定方程正整数解浅析)...
[原创]钱币问题解答(二元一次不定方程正整数解浅析) 可能很多朋友对不定方程的解法都有一定的了解,我这里只针对钱币问题对一类简单的二元一次不定方程正整数解 做些简单说明,希望会对大家有用. (严谨的数 ...
- 搭建文华财经博易大师信管家多国语言IQ Option二元期权源码
搭建文华财经博易大师信管家多国语言IQ Option二元期权源码 ★稳定高并发的系统C#语言搭建: ★行情数据实时流畅不卡不顿: ★365天贴心服务保驾护航: 搭建:IQ Option二元期权.Exp ...
- 无迹卡尔曼滤波UKF和容积卡尔曼滤波CKF进行锂电池SOC估计的C语言版本实现,和matlab版本一样包含定参和FFRLS两种情况
(C语言版)无迹卡尔曼滤波UKF和容积卡尔曼滤波CKF进行锂电池SOC估计的C语言版本实现,和matlab版本一样包含定参和FFRLS两种情况,已在VS2019和Ubuntu 20.04.4版本中运行 ...
- C语言排序方法-----二元选择排序法
上一篇文章C语言排序方法-----选择排序法中分析了选择排序法,这篇文章分析一下选择排序法的优化算法,二元选择排序法,在选择排序法中每次找一个最大或者最小的数据放到开始位置,那么为了提高效率可以每次比 ...
- 计划行为理论和技术接受模型整合模型图形_音乐与语言加工的二元模型(dual modal)...
随着科技研究手段的进步,随着心理学主导的理论从强调外在的行为向强调内在的认知转变,音乐与语言之间关系的对比探讨,成为神经心理学研究的热点,而且业已成为经典的研究范式,吸引了语言学.音乐学.神经科学等跨 ...
- c语言编程求二元一次方程组方程,二元一次方程组练习题 已知二元一次方程的三个系数,用C语言编程求方程的......
导航:网站首页 > 二元一次方程组练习题 已知二元一次方程的三个系数,用C语言编程求方程的... 二元一次方程组练习题 已知二元一次方程的三个系数,用C语言编程求方程的... 相关问题: 匿名网 ...
- C语言:打印二元一次方程的根
打印二元一次方程的根.通过对a和判别式的比较,输出二元一次方程的根. #include<stdio.h> #include<stdlib.h> #include<math ...
- (C语言)求解二元一次方程组
OK,今天再来给大家分享一个代码 求解二元一次方程组 我们都知道 =0" class="mathcode" src="https://latex.codecog ...
- python怎么算二元一次方程_使用 Python 解数学方程
说到数学题,相信大家都不陌生,从小学到大学都跟数学打交道. 其中初中的方程组,高中的二次曲线,大学的微积分最为头疼,这个项目就使用python 来解决方程组问题,微积分问题,矩阵化简. SymPy库 ...
最新文章
- 百度 什么是主成分分析
- ThinkPHP判断更新是否成功的正确方法
- main函数的参数argc和argv
- linux系统判断是否重启、关机、查询登录诊断分析简介
- java派生类如何使用_继承:使用基类或派生类来做东西[关闭]
- 万能门店小程序_关于传统门店开发微信小程序的优势
- mac mongodb 安装
- 《Effective Debugging:软件和系统调试的66个有效方法》一第5条:在能够正常运作的系统与发生故障的系统之间寻找差别...
- 【Python】Python第三方库安装
- centso7.5 安装minconda3和创建项目所需python3环境
- css 中引入第三方字体
- ubuntu16.04下ROS操作系统学习笔记(四 )机器人系组成、URDF机器人建模、xacro模型优化
- 【三维路径规划】基于matlab自适应遗传算法求解单无人机三维路径规划问题【含Matlab源码 214期】
- 2016级算法第一次练习赛-D.AlvinZH的儿时回忆——跳房子
- 秀球技:倒和其他无用
- cesium添加高德路网中文注记图及高德在线地图介绍
- DOTA数据集 | 数据前后处理操作系列
- 一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
- 汽车标定工具ETAS总线模块ES582.1详情介绍
- 微信小程序生成Excel
热门文章
- linux克隆后重新封装,克隆后立即在OSX上修改Linux内核源代码
- 基于Docker的Mysql主从复制搭建_mysql5.7.x
- 企业实战(Jenkins+GitLab+SonarQube)_03_Jenkins登录
- git Could not read from remote repository.Please make sure you have the correct access rights.
- Redis数据类型--散列类型
- php asciii 回车换行,ubuntu下关于telnet俩个特殊ascii字符回车0x0d与换行0x0a
- strtus2改成springboot_ssh框架使用springBoot升级迁移替换Struts2
- 奖学金c语言程序,奖学金 (C语言代码)
- 几何级数 函数 matlab,matlab 实验05数据的统计分析
- Python 进程 Process 模块 - Python零基础入门教程